Shell 特殊变量
$0
- 脚本名
$1
到 $9
- 脚本的参数。$1 是第一个参数,依此类推。
$*
- 传递给脚本或函数的所有参数。
$@
- 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同。
$#
- 参数个数
$?
- 前一个命令的返回值
$$
- 当前脚本的进程识别码
!!
- 完整的上一条命令,包括参数。常见应用:当你因为权限不足执行命令失败时,可以使用 sudo !!
再尝试一次。
$_
- 上一条命令的最后一个参数。如果你正在使用的是交互式shell,你可以通过按下 Esc 之后键入 .
来获取这个值。
$* 和 $@ 的区别
$*
和 $@
都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n"
的形式输出所有参数。
但是当它们被双引号(" ")包含时,$*
会将所有的参数作为一个整体,以 "$1 $2 … $n"
的形式输出所有参数;
$@
会将各个参数分开,以 "$1" "$2"... "$n"
的形式输出所有参数。
下面的例子可以看到 $*
和 $@
的区别:
#!/bin/bash
echo "\$*=" $*
echo "\"\$*\"=" "$*"
echo "\$@=" $@
echo "\"\$@\"=" "$@"
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"
done
echo "print each param from \"\$@\""
for var in "$@"
do
echo "$var"
done
参考:
Author And Source
この問題について(Shell 特殊变量), 我々は、より多くの情報をここで見つけました https://qiita.com/shooter/items/ea6f6073faaefad33a25著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .