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本身的PID(ProcessID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值)
$-
使用Set命令设定的Flag一览
$*
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
#!/bin/bash
printf '$$ %s\n' "$$"
printf '$! %s\n' "$!"
printf '$? %s\n' "$?"
printf '$* %s\n' "$*"
printf '$@ %s\n' "$@"
printf '$# %s\n' "$#"
printf '$0 %s\n' "$0"
printf '$1 %s\n' "$1"
printf '$IFS %s\n' "$IFS"
IFS_OLD=$IFS
IFS=','
for param in $2; do
echo $param
done
IFS=$IFS_OLD
执行 sh test.sh a b,c,d
输出:
$$ 5651
$!
$? 0
$* a b,c,d
$@ a
$@ b,c,d
$# 2
$0 /data/build/test.sh
$1 a
IFS
b
c
d