如何在sh shell中循环参数

时间:2013-08-08 15:01:24

标签: linux shell unix sh

我知道“for loop”可用于遍历所有参数。但对于我的代码,我更喜欢

i = 1
if [ ${$i} == xx] ; then
 xxx
fi

((iArg++))

if [ ${$i} == xx] ; then
 xxx
fi

很明显,$ {$ i}无效。我该如何纠正?

我曾经使用

编写csh
$argv[$i]

现在必须使用sh shell。谢谢你的帮助

1 个答案:

答案 0 :(得分:5)

由于这种困难,通常使用$1shift来完成参数解析。典型的循环可能如下所示:

while [ $# -gt 0 ]; do
    case $1 in
        -a) echo "-a";    shift 1;;   # option with no argument
        -b) echo "-b $2"; shift 2;;   # option which takes argument, use $2
        -c) echo "-c";    shift 1;;
    esac
done

也就是说,间接变量名称的使用方式是!,如:

${!i}