linux 当我使用parallel命令运行ssh命令时,无法识别“\n”

jjhzyzn0  于 2023-08-03  发布在  Linux
关注(0)|答案(2)|浏览(145)
  • 通常,我可以运行这个命令ssh -lroot [host ip] "echo -e 'test1\ntest2'" > ~/test.txt在host [host ip]中的test.txt文件中写入两行。
  • 然而,当我将它与并行(即parallel -a argfile -j3 -k --tag ssh -lroot {} "echo -e 'test1\ntest2' \> ~/test.txt")一起使用时,它会忽略'\n'并将'test1ntest2'实际写入test.txt。
  • 如何使'\n'在并行命令中按预期工作?有人能帮忙澄清一下吗?
  • 我尝试在单引号前添加反斜杠,如下所示:parallel -a argfile -j3 -k --tag ssh -lroot {} "echo -e \'test1\ntest2\' \> ~/test.txt"还是不像预期的那样。
  • 尝试在“\n”之前添加反斜杠,也不起作用。parallel -a argfile -j3 -k --tag ssh -lroot {} "echo -e 'test1\\ntest2' \> ~/test.txt"

我只是想写两行到某个文件的远程服务器批量使用并行...

e7arh2l6

e7arh2l61#

已使用以下命令修复此问题:第一个月
我认为解析过程可能如下:

  • 正常输入:\\\\n
  • 本地主机shell解析一层反斜杠:\\n
  • 并行命令标识单引号,保留原点:\\n
  • ssh解析一层反斜杠:\n
  • 'echo -e'命令将\n解析为新行。

如果我们将单引号改为双引号或直接删除单引号,反斜杠的数量需要改为双引号:parallel -a argfile -j3 -k --tag ssh -lroot {} "echo -e "test1\\\\\\\\ntest2" \> ~/test.txt".玩得开心,伙计们:)。

yqkkidmi

yqkkidmi2#

也可以试试--nonall

parallel --slf argfile -j3 -k --nonall --tag --ssh 'ssh -lroot' echo -e 'test1\\ntest2' \> ~/test.txt

字符串

相关问题