在通常情况下,这很简单:
#cd /home && ls && echo "OK"root web supportOK
然而,当其中一个命令结束于&这似乎不起作用:
#killall vsftpd && /usr/sbin/vsftpd & && echo "OK"-sh: Syntax error: unexpected "&&"OK
我试过没有单一的尾随&但这显然会阻止后者回声的处理.只是为了好玩,尝试了三重奏和但这也会返回错误.
所以我的问题;我怎样才能得到
killall vsftpd/usr/sbin/vsftpd &echo "OK"
在一条线上执行?
解决方法 首先,如果要在一行中运行多个命令,请将它们分隔为;:cmd1 ; cmd2 ; cmd3
和&&是逻辑和 *** 作符.如果你发行
cmd1 && cmd2
cmd2仅在cmd1成功时运行.这一点很重要(见下文).
如果您使用&在后台运行命令只需附加下一个命令而不用;分隔符:
cmd1 & cmd2
&在这种情况下,它不是逻辑运算符,它告诉bash在后台运行cmd1.
在您的情况下,命令行在语法上需要如下所示:
killall vsftpd && /usr/sbin/vsftpd & echo "OK"
但是,我猜你真的是这个意思:
killall vsftpd ; /usr/sbin/vsftpd & echo "OK"
因为否则你将无法启动该进程(如果它尚未运行),因为killall将返回非零返回代码.
即使这样,代码也非常脆弱.我建议使用您的 *** 作系统工具启动vsftp作为守护进程.我的意思是命令start-stop-daemon之类的设施.
总结以上是内存溢出为你收集整理的Linux中单行上的多个命令全部内容,希望文章能够帮你解决Linux中单行上的多个命令所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)