如果要写一个脚本能批量完成某种任务,又要有一定灵活性的话,就需要处理参数列表(arg list),即参数个数不固定的情况。
一个简单的思路是利用循环变量的默认取值:
#! /bin/sh
if [$# lt 1]
then
echo "usage: xxxxxx/n"
fi
for par in $@; do
#do something for all par.
done
这里par取遍所有输入参数。如果参数不能统一处理,开始有几个例外,可以用shift n(跳过n个参数):
#! /bin/sh
echo $1
shift 1
echo $1
for par; do
#......
done
运行脚本./xxx.sh par1 par2 par3,会发现shift跳过参数使得默认的引用“移位”了,$1指向par2,$2指向par3.。。。
用这个方法,比如我想在每个子文件夹下生成文件或连接的事情就很容易了。写个类似的脚本,然后 run_xxx.sh `ls`就搞定了。