我有一个表达cat file.txt | script.sh 1> output.txt || mkdir TEST &
.最后是否&
意味着只mkdir
在后台或整个表达式中执行?
对于&
,它会影响整个表达式。您可以轻松地使用一些不那么优雅的东西来检查它,例如:
echo '1' > file1 || echo '2' > file2 &
Run Code Online (Sandbox Code Playgroud)
(像你一样进行一些输出重定向),否则,只需
echo '1' || echo '2' &
Run Code Online (Sandbox Code Playgroud)
这里第一个 echo 的输出将返回 true,条件中的第二部分将不会被执行,但无论如何它都会进入后台。
然后,您可以检查:
false || echo '2' > file2 &
Run Code Online (Sandbox Code Playgroud)
或者更简单的版本:
false || echo '2' &
Run Code Online (Sandbox Code Playgroud)
在这里,echo 将被执行,并且也在后台执行。
然后,在这两种情况下,它将在后台执行,即使在第一种情况下仅执行第一部分,而在第二种情况下仅执行第二部分。