foo.sh: line 22: syntax error near unexpected token `<'
foo.sh: line 22: ` done < <( sh $inputScriptFile test.txt )'
它返回错误
.video {
height: 400px;
width: 100%;
display: block;
}
那有什么不对?我从其他问题中解决了从结果中读取行的解决方案
答案 0 :(得分:5)
您收到错误是因为流程替换(<(some command)
部分)不是sh
中的标准功能(在POSIX中定义),这意味着它可能会对某些功能起作用操作系统,但可能不在其他操作系统或具有不同配置的相同操作系统中。
您澄清说您的脚本顶部有#!/bin/bash
,但我猜您仍然通过sh foo.sh
运行脚本,因此,#!/bin/bash
将被忽略,脚本为由sh
解释。
我假设您的默认shell是bash
(运行echo $SHELL
),因此如果您将脚本粘贴到终端并执行,所有问题都将消失。
====更新====
如果我的假设是正确的,可能的解决方案:
保持#!/bin/bash
不变,让您的脚本成为chmod +x foo.sh
的可执行文件。然后直接通过./foo.sh
答案 1 :(得分:0)
找到了另一个解决方案:进程替换不是POSIX兼容功能,并且可能需要启用它,具体取决于您的系统和外壳。
在脚本的循环中 之前使用以下行:
set +o posix
启用它。可能是您的系统根本不支持它,这对您没有帮助。