如何读取单独变量中的参数

如何读取单独变量中的参数

从命令行读取参数非常容易,$1 $2 $3

但!如果我想做一个分配的循环$1 to $arg1$2 to $arg2 我不想通过输入来完成arg1=$1; arg2=$2,我想学习如何处理单个$..我该如何做循环?

要增加$arg,我只需添加$arg$nr 并计数$nr,但是我该如何处理$1$$nr不工作..

答案1

对于具有数组的 shell,传统的答案是使用数组:

arg=( "$@" )

然后你有$1in ${arg[0]}$2in${arg[1]}等等。

要循环这些,请使用

for a in "${arg[@]}"; do
    # code that uses "$a" goes here
done

或者,如果位置参数列表中仍有数据并希望减少输入,

for a do
    # code that uses "$a" goes here
done

请注意,引用对于保护原始参数中的数据不被分割和/或用作通配模式非常重要。

答案2

传统的答案是使用eval.

for ((i=1; i<=$#; i++))
do
    eval "arg$i=\${$i}"
done

(请注意,大括号是必需的,如 中那样bash$10将被解释为${1}0而不是${10}

相关内容