[英]Bash: “invalid number” error when passing array elements value to variable
我运行GNU bash,版本4.3.11(1)-release(x86_64-pc-linux-gnu)。 从cmd行调用的一个非常简单的脚本,至少有3个任意参数:
#!/bin/bash
n_arg=$#
arr=("$@")
AA=${arr[0]} # CHANGED FROM AA=S{arr[0]}
BB=${arr[1]} # CHANGED FROM BB=S{arr[1]}
for (( i = 2; i < "$n_arg"; i++ )); do
printf "%d %s %s %s\n" $i $AA $BB ${arr[i]} # <- line 9
# printf "%d %s %s %s\n" $i "$AA" "$BB" ${arr[i]} # ALSO TRIED
done
exit 0
产生错误,如下所示:
$ script.sh 10 2 13 443
./script.sh: line 9: printf: S{arr[0]}: invalid number
./script.sh: line 9: printf: S{arr[1]}: invalid number
2 0 0 13
./script.sh: line 9: printf: S{arr[0]}: invalid number
./script.sh: line 9: printf: S{arr[1]}: invalid number
3 0 0 443
我可以看到分别传递给AA和BB的第一个和第二个数组元素的值似乎构成了一个prbm,我的范围不大。 我确实尝试过:AA =“S {arr [0]}”当我以交互模式输入代码时,一切都顺利进行。
S
看起来像$
,特别是当你累了。 我使用的字体设计清楚地区分了那样的同形字 - 强烈推荐。
数组不是POSIX shell标准的一部分 。 您可以滚动自己的polyfill,或使用预制的polyfill 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.