Linux中单行上的多个命令
发布时间:2020-12-14 00:31:56 所属栏目:Linux 来源:网络整理
导读:我想在命令行上运行几个命令. 在通常情况下,这很简单: #cd /home ls echo "OK"root web supportOK 然而,当其中一个命令结束于这似乎不起作用: #killall vsftpd /usr/sbin/vsftpd echo "OK"-sh: syntax error: unexpected ""OK 我试过没有单一的尾随但这显
我想在命令行上运行几个命令.
在通常情况下,这很简单: #cd /home && ls && echo "OK" root web support OK 然而,当其中一个命令结束于&这似乎不起作用: #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之类的设施. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |