这个用于向数组添加元素的bash脚本语法有什么问题?

时间:2017-06-18 10:23:03

标签: arrays linux bash scripting sh

用于创建某些系统报告的简单shell脚本包含代码

ARRAY=$(awk -F ':' '$3>=1000 && $3<60000 {print $1}' /etc/passwd)
ARRAY+=('root') 

第一行中的数组声明不会产生任何错误输出,但是对于第二行,我收到一条错误消息:语法错误:单词意外(期待“)”)

此代码有什么问题?

1 个答案:

答案 0 :(得分:3)

从您的屏幕截图来看,问题在于您没有将其作为bash脚本运行。您正在使用sh testscript shell执行sh,而bash shell不是./testscript。进行@Cyrus推荐的更改,并使脚本可执行,以便您使用shebang行并执行bash testscript或使用bash运行它set +x

此外,set -x会关闭跟踪/调试功能,因此当您遇到意外问题时,最好使用$ cat testscript ARRAY=$(awk -F ':' '$3>=1000 && $3<60000 {print $1}' /etc/passwd) ARRAY+=('root') $ sh testscript testscript: 2: testscript: Syntax error: word unexpected (expecting ")" $ bash testscript $ 为有问题的区域启用它。

我为自己演示了如下问题:

   A   B    C
0  4  40  300
1  2  70  900
2  5  80  900