# 你的写法:
ssh user@host "cmd1\n;cmd2"
# 实际效果:
# 远程收到的命令是字面量:`cmd1\n;cmd2`
# Shell 会尝试去执行一个叫做 "cmd1\n" 的程序,这显然会报错。
方法 A:直接按回车(最直观)
在双引号内直接换行,Bash 会自动将其解释为换行符:
ssh user@host "
command1
command2
"
方法 B:使用 '...' 语法(支持转义序列)
如果你非要写在一行里,必须使用 '...' 这种特殊的单引号格式,里面的 n 才会被解释为换行:
ssh user@host $'command1\ncommand2\ncommand3'
方法 C:使用 $'n' 拼接
如果你想保持代码在一行,可以这样写:
ssh user@host "command1"$'\n'"command2"$'\n'"command3"