我们除了可以使用上一篇文章中使用到的 while 和 shift 结合的方式来处理多个参数,还可以使用 for 循环来一个接一个地处理所有的命令行参数。
#! /bin/bash
E_BADARGS=65
if [ ! -n "$1" ]
then
echo "Usage: `basename $0` argument1 argument2 ..."
exit $E_BADARGS
fi
index=1
echo "Listing args with \$*:"
for arg in $*
do
echo "Arg #$index = $arg"
let index+=1
done
echo
index=1
echo "Listing args with \"\$@\""
for arg in "$@"
do
echo "Arg #$index = $arg"
let index+=1
done
注意:上述脚本实例中,两个 for 循环语句中调用的变量分别为 $* 和 "$@"。在这里,$* 是没有双引号的,因为如果加了双引号,即 “$*”,其值将被扩展为包含所有位置参数的值得单个字符串,将使 for 循环仅迭代一次。
上述脚本的运行测试结果:
本文参考自 《Linux Shell命令行及脚本编程实例详解 》