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