位置参数
$0 | 相当C的main函数argv[0] |
---|---|
$1、$2 | 位置参数,相当于argv[1]、argv[2] |
$# | 相当于 argc -1 |
$@ | 表示参数列表 |
$? | 上一条命令的退出码 |
$$ | 当前shell的进程号 |
#!/bin/bash
echo "\$0 -> $0"
echo "\$1 -> $1"
echo "\$2 -> $2"
echo "\$3 -> $3"
echo "\$# -> $#"
echo "\$@ -> $@"
echo "\$? -> $?"
echo "\$$ -> $$"
#执行
[yexi@yexi 桌面]$ ./hh.sh a b c #后面跟a b c 3个参数
$0 -> ./hh.sh
$1 -> a
$2 -> b
$3 -> c
$# -> 3
$@ -> a b c
$? -> 0
$$ -> 17204
位置参数可以使用 shift 命令左移。
shift 2表示左移两个,原来的$3变成$1,原来的$1、$2丢弃
#!/bin/bash
shift 2
echo "\$0 -> $0"
echo "\$1 -> $1"
echo "\$2 -> $2"
echo "\$3 -> $3"
echo "\$# -> $#"
echo "\$@ -> $@"
echo "\$? -> $?"
echo "\$$ -> $$"
#执行
[yexi@yexi 桌面]$ ./hh.sh a b c
$0 -> ./hh.sh
$1 -> c
$2 ->
$3 ->
$# -> 1
$@ -> c
$? -> 0
$$ -> 17234
遍历命令行参数
#方法1
for i in $@
do
echo $i
done
#方法2
while [ $# -ne 0 ]
do
echo $i
shift 1
done