shell语法(位置参数和特殊变量)

  位置参数

$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

猜你喜欢

转载自blog.csdn.net/Ananbei/article/details/81224659