StudentAnwser=()
inputScriptFile=001.sh
while IFS= read -r line;
do
StudentAnwser+=( "$line" )
done < <( sh $inputScriptFile test.txt )
返回错误
foo.sh: line 22: syntax error near unexpected token `<'
foo.sh: line 22: ` done < <( sh $inputScriptFile test.txt )'
这有什么问题吗?我按照其他问题的解决方案从结果中读取行
最佳答案
您收到错误是因为进程替换(<(some command)
部分)不是sh
中的标准功能(在POSIX中定义) ,这意味着它可能在某些操作系统上运行,但可能在其他操作系统中或在具有不同配置的同一操作系统中运行。
您澄清说您有 #!/bin/bash
在脚本的顶部,但我猜您仍然通过 sh foo.sh
运行脚本,因此,#!/bin/bash
将被忽略并且脚本由 sh
解释.
我假设您的默认 shell 是 bash
(运行 echo $SHELL
),所以如果您将脚本粘贴到终端并执行,所有问题都会消失。
====更新====
如果我的假设正确,可能的解决方案:
离开#!/bin/bash
事实上,通过chmod +x foo.sh
使您的脚本成为可执行文件。然后直接通过./foo.sh
运行即可
关于bash - 意外标记附近出现语法错误 `<',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36144610/