我正在尝试远程登录shell并在shell上执行一堆命令。 但为了使其更具可读性,我想将我的代码放在多行上。我该怎么做?
ssh -o <Option> -x -l <user> <host> " $long_command1; $long_command2; .... "
谢谢!
答案 0 :(得分:6)
ssh
实际上只是将字符串传递给远程主机。这个字符串被赋予一个shell,它应该解释它(用户的登录shell,通常类似于bash
)。因此,无论您想要执行什么都需要由远程登录shell解释,这就是您必须坚持的整个规则。
您确实可以在命令字符串中使用换行符:
ssh alfe@sweethome "
ls /home/alfe/whatever
ping foreignhost
date
rm foobar
"
答案 1 :(得分:5)
您可以使用Here Documents
的{{1}}功能。
它就像:
bash
EOF标志着输入的结束。
有关详细信息:请使用ssh <remote-host> bash <<EOF
echo first command
echo second command
EOF
并搜索man bash
。
编辑:唯一需要注意的是,使用变量可能很棘手,您必须转义Here Documents
以保护它们在远程主机而不是本地shell上进行评估。像$
一样。否则使用从bash运行的所有内容并使用\$HOSTNAME
。
答案 2 :(得分:2)
您可以在以下示例中执行此操作。
ssh -o <Option> -x -l <user> <host> '
pwd
whoami
ls
echo "$PATH"
'