繁体   English   中英

Bash:将数组元素值传递给变量时出现“无效数字”错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM