Bash 脚本 - 嵌套变量



我目前遇到了一个棘手的问题,我还没有找到任何解决方案。

我写了一个这样的脚本:

#!/bin/sh 
x=1
while [ "$x" -le $# ]; do
echo "$x"'. Argument is: ' "$$x"
x="$(( $x + 1 ))"
done

我建议 shell 在扩展变量以访问位置 x 上的参数后计算表达式 "\$$x",但输出是:

1. Argument is: $1

请帮忙。提前感谢。

这是

修复

$ cat a.sh
#!/bin/sh
x=1
while [ "$x" -le $# ]; do
echo "$x"'. Argument is: ' "${!x}"    # If you need indirect expansion, use ${!var} is easier way.
x="$(( $x + 1 ))"
done

测试结果

$ sh a.sh a b c
1. Argument is:  a
2. Argument is:  b
3. Argument is:  c

这段代码应该有效:

#!/bin/sh
x=0
args=($@)
while [ "$x" -lt $# ]; do
    echo "$x"'. Argument is: ' "${args[${x}]}"
    x="$(( $x + 1 ))"
done

最新更新