Linux 特殊变量 "$#,$0,$1,$$,$?,$*,$@"

原创
2021/11/25 17:25
阅读数 41

例子

先看一个例子

cat > test.sh <<EOF

echo "参数个数: "$#
echo "当前shell脚本名称" $0
echo "当前系统默认shell: "$SHELL
echo "第一个参数: "$1
echo "第二个参数: "$2
echo "当前shell进程id: "$$
echo "上一条命令执行结果: "$?

echo "===========\$*和\$@区别==========="
echo "所有参数\"\$*\": "
for p in "$*"
do
  echo $p
done
echo "所有参数\"\$@\": "
for p in "$@"
do
  echo $p
done
echo "=============="
echo "\$*和\$@使用上没什么区别"
echo "\"\$*\"会把参数\"a b c\"作为3个参数,\"\$@\"会把参数\"a b c\"作为1个参数"

EOF

然后执行 test.sh 脚本

$ sh test.sh "a b c" d

输出

参数个数: 2
当前shell脚本名称 test.sh
当前系统默认shell: /bin/zsh
第一个参数: a b c
第二个参数: d
当前shell进程id: 6314
上一条命令执行结果: 0
===========$*和$@区别===========
所有参数"$*":
a b c d
所有参数"$@":
a b c
d
==============
$*和$@使用上没什么区别
"$*"会把参数"a b c"作为3个参数,"$@"会把参数"a b c"作为1个参数

说明

脚本 说明
$# 参数个数
$0 当前shell脚本名称
$SHELL 当前系统默认shell
$1 第一个参数
$2 第2个参数
$n 第n个参数
$$ 当前shell进程id
$? 上一条命令执行结果
$* 所有参数,按空格输出。$* 和 "$*" 会把 "a b c" 作为3个参数输出
$@ 所有参数,按空格输出。"#@"会把 "a b c" 作为一个整体输出
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部