shell特殊变量$0,$#,$@,$*,$?,$$和命令行参数

变量   含义
$0     当前脚本的文件名    
$n     传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。    
$#     传递给脚本或函数的参数个数。    
$*     传递给脚本或函数的所有参数。    
$@     传递给脚本或函数的所有参数。 被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。    
$?     上个命令的退出状态,或函数的返回值。    
$$     当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。    
#!/bin/bash    
#. a.sh        #sh/bash file.sh (ubuntu中sh指向dash,可以用ls -l /bin/sh来查看),该file.sh可以无“执行权限”
#source a.sh    #source和.等价,在当前bash环境下读取并执行file.sh中的命令,该file.sh可以无“执行权限”
        #./file.sh 该file.sh需要“执行权限”(chmod +x file.sh)
out(){
echo "File name:$0"
echo "First Parameter:$1"
echo "Second Parameter:$2"
echo "Quoted Values:$@"
echo "Quoted Values:$*"
echo "Total Number of Parameters:$#"

echo "print each param from \$*"
for var in $*
    do
      echo "$var"
    done 

echo "print each param from \$@"
for var in $@
    do
      echo "$var"
    done     
}

echo "————————执行out函数,参数为文件参数$3,$1,$2,$0————————"
out $3 $1 $2 $0    #空格对参数进行分割
echo "————————sh文件中的语句————————————"
echo "File name:$0"
echo "First Parameter:$1"
echo "Second Parameter:$2"
echo "Quoted Values:$@"
echo "\"\$@\"=""$@"
echo "Quoted Values:$*"
echo "\"\$*\"=""$*"
echo "Total Number of Parameters:$#"

echo "print each param from \$*"
for var in $*
    do
      echo "$var"
    done 

echo "print each param from \"\$*\""
for var in "$*"
    do    
      echo "$var"
    done        

echo "print each param from \$@"
for var in $@
    do
      echo "$var"
    done

echo "print each param from \"\$@\""    
for var in "$*"
    do 
      echo "$var"    
    done

输出结果

hyc@hyc-csu:~/shellCommands$ bash b.sh 3 6 9
————————执行out函数,参数为文件参数9,3,6,b.sh————————
File name:b.sh
First Parameter:9
Second Parameter:3
Quoted Values:9 3 6 b.sh
Quoted Values:9 3 6 b.sh
Total Number of Parameters:4
print each param from $*
9
3
6
b.sh
print each param from $@
9
3
6
b.sh
————————sh文件中的语句————————————
File name:b.sh
First Parameter:3
Second Parameter:6
Quoted Values:3 6 9
"$@"=3 6 9
Quoted Values:3 6 9
"$*"=3 6 9
Total Number of Parameters:3
print each param from $*
3
6
9
print each param from "$*"
3 6 9
print each param from $@
3
6
9
print each param from "$@"
3 6 9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值