0

我正在研究一个 bash 函数,我怀疑它当前有语法错误,代码是这样的:

for (( i=1; i<$#; i++))
do
  GET_BLOCK "/$${!i}/" ...
done

我要做的是为第一个参数运行 GET_BLOCK "/$1/",为第二个参数运行 "/$2/",依此类推,直到没有更多参数传递给脚本。我这样做对吗?(PS!我需要获取变量 $1, $2 exc 的值...)

4

1 回答 1

4

迭代位置参数的更惯用的方法是使用$@

for p in "$@"; do
    GET_BLOCK "/$p/"
done

你想要的是

for ((i=1; i<$#; i++))
do
    GET_BLOCK "/${!i}"
done

但这既不标准,也比$@直接迭代更不清晰。

于 2013-06-18T12:44:53.097 回答