Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Sed命令无法通过SSH工作_Bash_Ssh_Sed - Fatal编程技术网

Bash Sed命令无法通过SSH工作

Bash Sed命令无法通过SSH工作,bash,ssh,sed,Bash,Ssh,Sed,考虑以下命令: ssh MACHINE sed -i 's#\[ "\$JBOSS_MODE" = "standalone" \]#\[ "\$JBOSS_MODE" = "sim_standalone" \]#' /tmp/sim-wildfly 从命令行运行此命令时,出现以下错误: sed: -e expression #1, char 3: unterminated `s' command 但是,当我首先SSH到特定的机器上,然后运行命令的sed部分时,它工作正常: > ssh

考虑以下命令:

ssh MACHINE sed -i 's#\[ "\$JBOSS_MODE" = "standalone" \]#\[ "\$JBOSS_MODE" = "sim_standalone" \]#' /tmp/sim-wildfly
从命令行运行此命令时,出现以下错误:

sed: -e expression #1, char 3: unterminated `s' command
但是,当我首先SSH到特定的机器上,然后运行命令的
sed
部分时,它工作正常:

> ssh MACHINE
> sed -i 's#\[ "\$JBOSS_MODE" = "standalone" \]#\[ "\$JBOSS_MODE" = "sim_standalone" \]#' /tmp/sim-wildfly
你知道为什么会这样吗


编辑:我相信这与我如何转义字符有关,因为我只是尝试了简单的测试替换,没有转义字符,效果很好。我尝试了双重转义,但也没有成功。

尝试
ssh
使用here doc避免疯狂转义:

ssh -t -t MACHINE <<'EOF'
sed -i 's#\[ "\$JBOSS_MODE" = "standalone" \]#\[ "\$JBOSS_MODE" = "sim_standalone" \]#' /tmp/sim-wildfly
exit
EOF

ssh-t-t机器原来是空格,但这是一个很好的建议!我会试试看。它是有效的,但我得到这样一条消息:
伪终端将不会被分配,因为stdin不是终端。
有什么办法可以摆脱它吗?啊,你最终需要一个
退出
。请参阅更新的答案。