如何在后台执行命令的情况下编写一行bash
我需要一行if语句如何在后台执行命令的情况下编写一行bash,bash,Bash,我需要一行if语句 if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then do-something &; fi 我想用做点什么&把任务做点什么放到后台,但是bash抱怨 bash: syntax error near unexpected token `;' 然后我试图用\& if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then do-something \&; fi 但这似乎不对,任务在前台而不是后台执行
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then do-something &; fi
我想用做点什么&
把任务做点什么
放到后台,但是bash抱怨
bash: syntax error near unexpected token `;'
然后我试图用\&
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then do-something \&; fi
但这似乎不对,任务在前台而不是后台执行。您不需要最后的分号。如果[[“$TRAVIS_OS_NAME”==“linux”],请尝试
;然后做点什么&fi
你不需要最后的分号。如果[[“$TRAVIS_OS_NAME”==“linux”],请尝试;然后做点什么&fi
你可以使用eval
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then eval "do-something &" ; fi
这将在后台执行您的
执行操作。您可以使用eval
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then eval "do-something &" ; fi
这将在后台执行您的操作。根据bash
手册:
一个简单的命令是一系列可选变量赋值,后跟空格分隔的单词和重定向,并由控制运算符终止
控制运算符定义为:
。。。执行控制功能的令牌。它是以下符号之一:|
,&
,&&
,代码>,代码>,(
,)
,
,和,
因此,&
本身就是一个控制操作符,您只允许在一个简单命令的末尾使用一个控制操作符。尝试执行以下操作:
sleep 10 & ; echo now
将给您带来与以下相同的错误:
sleep 10 ; ; echo now
正确的方法是:
sleep 10 & echo now
就这对您意味着什么而言,正确的方法是不使用双控操作员:
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then do-something & fi
根据bash
手册页:
一个简单的命令是一系列可选变量赋值,后跟空格分隔的单词和重定向,并由控制运算符终止
控制运算符定义为:
。。。执行控制功能的令牌。它是以下符号之一:|
,&
,&&
,代码>,代码>,(
,)
,
,和,
因此,&
本身就是一个控制操作符,您只允许在一个简单命令的末尾使用一个控制操作符。尝试执行以下操作:
sleep 10 & ; echo now
将给您带来与以下相同的错误:
sleep 10 ; ; echo now
正确的方法是:
sleep 10 & echo now
就这对您意味着什么而言,正确的方法是不使用双控操作员:
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then do-something & fi
非常感谢你的帮助!投赞成票!我决定接受paxdiablo的回答,因为它给了未来的读者一个完整的画面。非常感谢你们的帮助!投赞成票!我决定接受paxdiablo的答案,因为它给了未来的读者一个完整的图景。