用于创建一些系统报告的简单 shell 脚本包含代码
ARRAY=$(awk -F ':' '$3>=1000 && $3<60000 {print $1}' /etc/passwd)
ARRAY+=('root')
第一行中的数组声明不会产生任何错误输出,但对于第二行,我收到一条错误消息:语法错误:单词意外(预期为“)”)
这段代码有什么问题?
最佳答案
从您的屏幕截图来看,问题在于您没有将它作为 bash 脚本运行。您正在执行 sh testscript
,它使用 sh
shell 执行它,而不是 bash
。进行@Cyrus 推荐的更改并使脚本可执行,以便您使用 shebang 行并执行 ./testscript
或使用 bash 运行它 bash testscript
此外,set +x
关闭跟踪/调试,因此当您遇到意外问题时,最好使用 set -x
将其打开有问题的 block 。
我自己证明了这个问题如下:
$ 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
$
关于arrays - 这个用于向数组添加元素的 bash 脚本语法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44614004/