在命令行运行shell脚本的时候,支持携带参数,我们可以根据参数配置,动态调整脚本的执行结果 命令行示例如下:
# bash xxx.bash args1 args2
那在shell脚本里面如何读取这些参数呢,shell脚本定义了一些宏,如下列表
| $n | 传递给脚本或函数的参数,n是一个数字,表示从零开始第n个参数,第一个参数是$1 |
|---|---|
| $0 | 当前脚本的文件名,shell script第零个参数 |
| $# | 传递给脚本或函数的参数个数 |
| $* | 传递给脚本或函数的所有参数 |
| $@ | 传递给脚本或函数的所有参数 |
| $? | 上个命令的退出状态,或函数的返回值 |
| $$ | 当前Shell进程ID。对于shell script,就是这些脚本所在的进程ID |
接下来我们看下参数如何解析
if [ $# -lt 1 ];
then
echo "no arguments"
else
echo "has $# args"
fi
上述逻辑判断脚本执行的时候,是否携带参数,如果没有则打印"no arguments"
如果想知道命令行是否携带特定参数呢,比如说,是否存在一个名为“hello”的参数
j="hello"
for i in $@;
do
if [ $i = $j ];
then
echo "has $j"
else
echo "has no $j"
fi
done