Shell中的$变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

1. 常用的$变量

变量 含义
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是1,第二个参数是2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数,并把他们作为一个整个字符串处理。
$@ 传递给脚本或函数的所有参数,可以单独处理每个参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

2. 用$取命令行参数

运行脚本时传递给脚本的参数称为命令行参数。
命令行参数用 n 表示,例如,1 表示第一个参数,2 表示第二个参数,依次类推。为了兼容10以后的参数下标,建议使用 `{N}` 来取10以后的参数。

注意

  1. $0 可能是命令名称,也可能是包括该命令在内的全路径名称。为了能够获取命令的名称,可用basename $0 命令进行统一处理,无论采用何种方式启动程序,均可正确获取命令名称。
  2. 当我们判断某个参数是否有数据内容时,可以用 if [ -n $var ] 进行判断。

3. shift命令

bash shell工具链中提供了shift命令来帮助操作命令行参数,该命令会根据它们的相对位置来移动命令行参数,实现对命令行参数的遍历。

使用shift命令时,默认情况下它会将每个参数变量减一。比如命令行有3个参数,当执行shift命令一次后,变量3的值会移动到2,变量2的值会移动到1,而变量$1的值则会被删除。

shift遍历命令行参数

当我们不知道命令行参数个数的情况下,采用shift命令遍历其命令行参数是一种绝佳的方法。我们可以只操作第一个参数,执行shif命令移动参数,然后继续操作第一个参数,依次迭代。当然,你也可以执行shift n命令,n为你想移动的参数位数,默认为1。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,253评论 2 33
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,666评论 9 468
  • 瑜伽,在我20岁左右的时候就已经向往的锻炼身体的选择方式,没有之一,只有唯一。 我喜欢瑜伽,是因为它在练习完后带给...
    Shirley_183d阅读 361评论 0 1
  • 美国往事@和平影都 3个多小时看完一生,爱情、友情、背叛、原谅。喜欢的镜头:年少时几个兄弟吹着口哨排队穿过城市的街...
    圆十二阅读 534评论 3 2
  • 当我70岁的时候,我希望自己是一个正知正见,有修为的,对社会有价值的人 当我70岁的时候,我希望自己成为一束光,走...
    心我听你说阅读 194评论 0 0