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

来源:互联网 发布:贷款被大数据什么意思 编辑:程序博客网 时间:2024/05/21 21:50
变量   含义
$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"    doneecho "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.shFirst Parameter:9Second Parameter:3Quoted Values:9 3 6 b.shQuoted Values:9 3 6 b.shTotal Number of Parameters:4print each param from $*936b.shprint each param from $@936b.sh————————sh文件中的语句————————————File name:b.shFirst Parameter:3Second Parameter:6Quoted Values:3 6 9"$@"=3 6 9Quoted Values:3 6 9"$*"=3 6 9Total Number of Parameters:3print each param from $*369print each param from "$*"3 6 9print each param from $@369print each param from "$@"3 6 9

0 0
原创粉丝点击