linux shell变量$#,$@,$0,$1,$2的含义解释

时间:2023-03-09 05:54:58
linux shell变量$#,$@,$0,$1,$2的含义解释

变量说明: 
$$ Shell本身的PID(ProcessID) 
$! Shell最后运行的后台Process的PID 
$? 最后运行的命令的结束代码(返回值) 
$- 使用Set命令设定的Flag一览 
$* 所有参数列表。 所有的参数被认为是一个字符串
$@ 所有参数列表。参数是独立的字符串
$# 添加到Shell的参数个数 
$0 Shell本身的文件名 
$1~$n 添加到Shell的各参数值。$1是第1个参数、$2是第2个参数…。

通过一个脚本,来看看各个变量的效果

 #!/bin/sh

 ## RustFisher

 echo "----------------------"
 echo "PID:            \$$  $$"
 echo "option numbers: \$#  $#"
 echo "last return:    \$?  $?"
 echo "all parameters: \$*  $*"
 echo "all parameters: \$@  $@"
 echo "file name:      \$0  $0"
 echo "1st param:      \$1  $1"
 echo "2nd param:      \$2  $2"
 echo "3rd param:      \$3  $3"
 echo "4th param:      \$4  $4"
 echo "9th parem:      \$9  $9"
 echo "-----------------------"

 index=

 echo "get args by \"\$@\":"

 for arg in "$@"
 do
 echo "Arg #$index=$arg"
 let "index+=1"
 done

 echo "-----------------------"

 index=

 echo "get args by \"\$*\":"

 for arg in "$*"
 do
 echo "Arg #$index=$arg"
 done

 echo "-----------------------"

输出结果:

$ sh show.sh dont "worry be" happy
----------------------
PID:            $$
option numbers: $#  

all parameters: $*  dont worry be happy
all parameters: $@  dont worry be happy
  show.sh
1st param:      $  dont
2nd param:      $  worry be
3rd param:      $  happy
4th param:      $
9th parem:      $
-----------------------
get args by "$@":
Arg #=dont
Arg #=worry be
Arg #=happy
-----------------------
get args by "$*":
Arg #=dont worry be happy
-----------------------

随机推荐

  1. 【小练习02】CSS--网易产品

    要求用css和HTML实现下图效果: 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8& ...

  2. lucene全文搜索之二:创建索引器(创建IKAnalyzer分词器和索引目录管理)基于lucene5.5.3

    前言: lucene全文搜索之一中讲解了lucene开发搜索服务的基本结构,本章将会讲解如何创建索引器.管理索引目录和中文分词器的使用. 包括标准分词器,IKAnalyzer分词器以及两种索引目录的创 ...

  3. 定期清空log文件

    # auto-del-log.sh #!/bin/shfor i in `find . -name "*.out" -o -name "*.log"`do  c ...

  4. tostring方法

    //__tostring()方法//输出内容时不报错 用法实例:class Ren{ public $name; public function __tostring() { return &quot ...

  5. ArcGIS Earth(原谷歌地球)如何获取高精度矢量地图数据?(shp文件/要素类/kml)

    大家好,这次来分享干货.做地理分析的同学,或者需要使用地图却不知道哪里有矢量数据的时候,怎么办呢? 这次,我就告诉大家哪里能自己手工制作矢量点线面数据!注意哦,是自己绘制的. 使用到的软件: ArcG ...

  6. JDBC 数据库连接操作——实习第三天

    今天开始了比较重量级的学习了,之前都是对于Java基础的学习和回顾.继续上篇的话题,<谁动了我的奶酪>,奉献一句我觉得比较有哲理的话:"学会自嘲了,而当人们学会自嘲,能够嘲笑自己 ...

  7. Akka(9): 分布式运算:Remoting-远程构建式

    上篇我们讨论了Akka-Remoting.我们说Akka-Remoting是一种点对点的通讯方式,能使两个不同JVM上Akka-ActorSystem上的两个Actor之间可以相互沟通.Akka-Re ...

  8. angularJS插入html及更换iframe的src

    html: ng-bind-html <div class="tabs_content" ng-bind-html="specialHtml">&l ...

  9. 委托(C#)

    委托,delegate 关键字用于声明一个引用类型,该引用类型可用于封装命名方法或匿名方法.委托类似于 C++ 中的函数指针:但是,委托是类型安全和可靠的.委托类型声明的格式如下: public de ...

  10. 根据list得到list中的最大值最小值

    List ll = new ArrayList(); ll.add(new BigDecimal(1)); ll.add(new BigDecimal(4.99)); ll.add(new BigDe ...