AAA <options>; CCC AAA <options>
AAA
,CCC
是不同的命令。
这里我们在 zsh 脚本中 - 例如:
vi script.zsh
<...>
AAA <options>; CCC AAA <options>
<...>
详细:如果我错了,CCC AAA <options>
请纠正我AAA <options>
,将使用子 shell,然后从当前 shell 创建一个单独的进程,或者可能使用当前 shell,然后从运行当前脚本的进程创建一个子进程。
问题是完成CCC
后仍会存活。script.zsh
这会导致问题,当我尝试调用结果时 - 而不是返回值(它确实在完成后创建了一些东西 - 为 ie 新创建的对象CCC AAA <options>
)AAA <options>
里面 script.zsh
引起not found
警告。
话虽如此,如何让currentscript.zsh
可以看到结果呢'AAA <options>'
?
如果可能的话,瞄准 Z 壳。
编辑:应该是:
AAA <options>; CCC AAA <options>
答案1
不,
CCC 'AAA <options>'
CCC
从一个字面参数开始AAA <options>
。每个外壳都是一样的。您可以使用以下echo
命令代替CCC
:
$ echo 'AAA <options>'
AAA <options>
如果您想CCC
将 的输出(不带尾随换行符)作为AAA
单个参数进行调用,您可以这样做:
CCC "$(AAA <options>)"
如果您想使用CCC
与输出中尽可能多的单词AAA
(空格、制表符、换行符、NUL 分隔)进行调用,您可以这样做:
CCC $(AAA <options>)
无论如何,在返回CCC
之前不会启动AAA
,并且脚本在CCC
返回之前不会终止。
对于要在命令返回之前终止的脚本,您需要它异步启动该命令,如下所示:
CCC args &
无论如何,这在每个 shell 中都是相同的,它不是zsh
特定的(除了上面 NUL 上的拆分)。