Bash sh:意外标记“”附近出现语法错误<';

Bash sh:意外标记“”附近出现语法错误<';,bash,ssh,sh,Bash,Ssh,Sh,我正在创建一个脚本,将awk命令的输出重定向到一个循环中,但它给了我以下错误: sh: -c: line 3: syntax error near unexpected token `<' sh: -c: line 3: `done < <(awk "{print}" inputfile.txt)' sh:-c:第3行:意外标记附近的语法错误`该主机上的远程用户似乎使用非Bash的shell来运行命令,请参阅;解决这一问题的一种方法是避免巴西主义: ssh

我正在创建一个脚本,将awk命令的输出重定向到一个循环中,但它给了我以下错误:

sh: -c: line 3: syntax error near unexpected token `<'
sh: -c: line 3: `done < <(awk "{print}" inputfile.txt)'

sh:-c:第3行:意外标记附近的语法错误`该主机上的远程用户似乎使用非Bash的shell来运行命令,请参阅;解决这一问题的一种方法是避免巴西主义:

ssh“$host”'awk“{print}”inputfile.txt\
|而IFS=读取-r行;做
回音“$line”
完成
这有其自身的缺陷,请参见–或者,您可以指定远程主机应运行Bash:


ssh“$host”您是否使用
sh scriptname
运行脚本?我使用
bash scriptname
运行脚本,尽管在使用bash或sh@Kaitlyn:从错误消息中,您可以看到生成错误消息的不是bash,因为对于bash,消息将是bash:bla-bla。,不是sh:……好吧,这个解释很有道理,谢谢。不幸的是,在远程主机上指定bash的第二个代码段似乎不起作用。这很奇怪,因为我可以看到bash安装在远程服务器上,但我想它不会使用bash吧?我将尝试重新编写“bashisms”,就像您的第一个示例一样。在开始时,将我的awk结果传输到while循环是有效的。谢谢你的帮助!
#!/usr/bin/env bash

host=$1

ssh $host 'while read line
do
echo "hi";
done < <(awk "{print}" inputfile.txt)'