我目前遇到了一个棘手的问题,我还没有找到任何解决方案。
我写了一个这样的脚本:
#!/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