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

本文解析了Linux Shell脚本中的特殊变量$#, $0, $1, $2, $@的作用及区别,并通过示例脚本展示了这些变量的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux中shell变量$#,$@,$0,$1,$2的含义解释:
变量说明:
$$
Shell本身的PID(ProcessID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值)
$-
使用Set命令设定的Flag一览
$*
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
我们先写一个简单的脚本,执行以后再解释各个变量的意义
# touch variable
# vi variable
脚本内容如下:
#!/bin/sh
echo "number:$#"
echo "scname:$0"
echo "first :$1"
echo "second:$2"
echo "argume:$@"
保存退出
赋予脚本执行权限
# chmod +x variable
执行脚本
# ./variable aa bb
number:2
scname:./variable
first: aa
second:bb
argume:aa bb
通过显示结果可以看到:
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1是传递给该shell脚本的第一个参数
$2是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表

 

 

   精確來講,兩者只有在 soft quote (“”)中才有差異,否則,都表示"全部參數"( $0 除外)。
    舉例來說好了:
    若在 command line 上跑 my.sh p1 "p2 p3" p4 的話,
    不管是 $@ 還是 $* ,都可得到 p1 p2 p3 p4 就是了。
    但是,如果置於 soft quote 中的話:
    "$@" 則可得到 "p1" "p2 p3" "p4" 這三個不同的詞段(word)﹔
    "$*" 則可得到 "p1 p2 p3 p4" 這一整串單一的詞段。
    我們可修改一下前面的 my.sh ,使之內容如下:
        #!/bin/bash
        my_fun() {
            echo "$#"
        }
        echo 'the number of parameter in "$@" is '$(my_fun "$@")
        echo 'the number of parameter in "$*" is '$(my_fun "$*")
    然後再執行 ./my.sh p1 "p2 p3" p4 就知道 $@ 與 $* 差在哪了 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值