shell命令行中的特殊参数
如果想知道命令行中所有参数的个数,可以使用$#;
如果想知道命令行中最后一个参数,使用${!#},如果没有参数的话,那么${#!}就是程序名;
$*会把参数当做一个整体;
$@会把参数也当作一个整体,不过可以用for指令一个个取出来,这样就可以遍历命令行参数。
建立脚本test39.sh如下:
#/bin/bash
echo "param num is $#"
echo "the last param is ${!#}"
for item in "$*";do
echo "item -> $item"
done
for item in "$@";do
echo "item -> $item"
done
运行如下:
./test39.sh wu lin wai zhuan
结果如下:
param num is 4
the last param is zhuan
item -> wu lin wai zhuan
item -> wu
item -> lin
item -> wai
item -> zhuan
命令行中使用shift
shfit指令会把命令行中的参数进行左移操作,把$3的值给$2,$2的值给$1,$1的值被丢弃,注意$1的值不会给$0。shfit后面可以加参数,表示左移几个参数,比如shift 2表示左移2
建立如下脚本:
#/bin/bash
while [ -n "$1" ];do
echo "param is $1"
shift
done
运行如下:
./test40.sh wu lin wai zhuan
结果如下:
param is wu
param is lin
param is wai
param is zhuan