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

标签 arrays linux bash scripting sh

用于创建一些系统报告的简单 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/

相关文章:

linux - 如何在 linux proc 文件系统中计算运行队列长度

bash - 按扩展名删除孤立的 sidecar 文件

bash - 仅当循环的第一步没有错误时,如何使 bash 脚本继续循环的一部分?

c++ - BFD_RELOC_64 : Compiling assembler directives on a 32 bit linux with C++

linux - 在 bash 脚本中切换到 root 用户

java - 使直方图和星形图输出不正确

javascript - 数组中的重复数字 | JavaScript

用于 10000 的数组乘法的 c++ 内联函数

python - 测试两个 numpy 二维数组的相等性

linux - 从 SOAPUI 访问服务器 (PUTTY) 上的日志