您的位置:首页 > 运维架构 > Shell

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

2015-11-01 15:07 483 查看
在进行shell编程的过程中,常常有很多美元符号($)的变量,通过网络查找,整理如下,后续再补充

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参数…。

shell中${0}和${1}这些指什么? 例如echo ${0}为-bash

位置参数

脚本运行时传入的参数(如果是在脚本主体中),或函数调用时传入的参数(如果是在函数体内)。

${0}或$0,表示脚本名称或函数名称。

${1}或$1,表示脚本或函数的第一个参数。

依此类推,一共支持0~9共10个位置参数。

示例

#!/bin/bash

echo "[echo test]"
echo "\$\$ : $$"
echo "\$! : $!"
echo "\$? : $?"
echo "\$* : $*"
echo "\$@ : $@"
echo "\$# : $#"
echo "\$0 : $0"
echo "\$1 : $1"
echo "\$2 : $2"

printf "[printf test]\n"
printf "\$\$ is %s\n" "$$"
printf "\$! is %s\n" "$!"
printf "\$? is %s\n" "$?"
printf "\$* is %s\n" "$*"
printf "\$@ is %s\n" "$@"
printf "\$# is %s\n" "$#"
printf "\$0 is %s\n" "$0"
printf "\$1 is %s\n" "$1"
printf "\$2 is %s\n" "$2"

exit 0

[banbanlin@localhost]$ bash shell_params.sh hello 520
[echo test]
$$ : 4776
$! :
$? : 0
$* : hello 520
$@ : hello 520
$# : 2
$0 : shell_params.sh
$1 : hello
$2 : 520
[printf test]
$$ is 4776
$! is
$? is 0
$* is hello 520
$@ is hello
$@ is 520
$# is 2
$0 is shell_params.sh
$1 is hello
$2 is 520
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell linux 美元符号