在korn shell中ssh和运行多个命令的好方法是什么?我遇到了相关的question和顶级答案,但是我指定了/ bin / bash /并在korn shell上运行它。
是否可以在命令列表下运行(从引用问题的答案中复制)或者ksh可以有更好的方法吗?
> dplyr::select(iris, Petal.Width, -Petal.Length, everything())
Petal.Width Sepal.Length Sepal.Width Petal.Length Species
1 0.2 5.1 3.5 1.4 setosa
2 0.2 4.9 3.0 1.4 setosa
3 0.2 4.7 3.2 1.3 setosa
答案 0 :(得分:2)
是的,这很有效。但是如果先前的命令失败,如果以前的命令可以做坏事,那么如果先前的命令失败,最好停止链。
一种简单的方法是将命令与&&
链接在一起A && B && { C || true $? } && D
或者,
A && B && { C || true $? } && D
C上的技巧允许该命令失败但保持链接...如果没有匹配,grep经常需要这个继续。 true 上 $ 的参数什么也不做,除非在 set -x 下运行,否则它将跟踪C的错误情况。
答案 1 :(得分:0)
使用什么外壳并不重要。我宁愿坚持使用其中一个答案提供的解决方案,建议使用连接多路复用。
它是什么?您将运行单独的ssh命令,但所有这些命令都将在单个TCP连接中运行。
如何实现?在~/.ssh/config
中创建具有类似内容的配置文件:
Host otherhost
ControlPath ~/.ssh/controlmasters/%r@%h:%p
ControlMaster auto
ControlPersist yes
然后运行命令,就像在本地运行一样(以ssh server
为前缀)。第一个将启动连接,另一个将使用它
ssh otherhost ls some_folder;
ssh otherhost ./someaction.sh 'some params'
ssh otherhost pwd
ssh otherhost ./some_other_action 'other params'