我正在尝试远程登录到一个shell并在shell上执行一堆命令。但为了使它更易读,我想将我的代码放在多行上。我应该如何做呢?
ssh -o <Option> -x -l <user> <host> " $long_command1; $long_command2; .... "
谢谢!
我正在尝试远程登录到一个shell并在shell上执行一堆命令。但为了使它更易读,我想将我的代码放在多行上。我应该如何做呢?
ssh -o <Option> -x -l <user> <host> " $long_command1; $long_command2; .... "
谢谢!
ssh
实际上只是传递一个字符串到远程主机。在那里,这个字符串被传递给一个shell,它应该解释它(用户的登录shell,通常是类似 bash
的东西)。因此,你想要执行的任何内容都需要由远程登录shell来解释,这就是你必须遵循的整个规则。
你确实可以在命令字符串中使用换行符:
ssh alfe@sweethome "
ls /home/alfe/whatever
ping foreignhost
date
rm foobar
"
你可以使用bash
的Here Documents
功能。类似于:
ssh <remote-host> bash <<EOF
echo first command
echo second command
EOF
文件结束标记(EOF)表示输入的结尾。
更多信息请参阅man bash
并搜索Here Documents
。
编辑:唯一的注意事项是使用变量可能会有些棘手,您必须转义$
以保护它们不被评估为远程主机而不是本地shell中的变量。例如:\$HOSTNAME
。否则,可以与从bash运行并使用stdin
的所有内容一起使用。
bash
,只需使用“HereDocing”到SSH即可。 - ntkissh -o <Option> -x -l <user> <host> '
pwd
whoami
ls
echo "$PATH"
'