加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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之类的设施.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读