用于创建某些系统报告的简单shell脚本包含代码
ARRAY=$(awk -F ':' '$3>=1000 && $3<60000 {print $1}' /etc/passwd)
ARRAY+=('root')
第一行中的数组声明不会产生任何错误输出,但是对于第二行,我收到一条错误消息:语法错误:单词意外(期待“)”)
此代码有什么问题?
答案 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