我想运行这个 sed:
sed "s?\(Defaults.*\)?\1:/etc/bla/foo/?" filename
但在使用 pssh 运行时失败,并退出并显示错误代码 1:
pssh -h /root/listofservers -l root -A "sed "s?\(Defaults.*\)?\1:/etc/bla/foo/?" filename"
答案1
pssh
有以下用法概要:
pssh [options] command ...
也就是说,不要引用要在远程主机上执行的命令(否则它将把整个引用的命令视为命令上的名称)。此外,单引号字符串是静态的,如sed
表达式。
建议:
pssh -h /root/listofservers -l root -A sed 's#\(Defaults.*\)#\1:/etc/bla/foo/#' filename
我也改成了?
since#
是?
正则表达式字符。它在这里不会产生任何影响,但当我尝试解析该表达式时,它让我短暂地感到困惑。