我使用的是带有 GNOME Terminal 3.36.2 的 Ubuntu 20.04LTS。我想运行两个命令,仅当第一个命令成功时才执行第二个命令:
proc.sh && results.sh
我想在单独的终端窗口中运行它,所以我说:
gnome-terminal -e 'proc.sh && results.sh'
这有效。但我收到一条已弃用的警告-e
,我应该使用--
.但是,两者-x
(也已弃用)和--
是相同的,并且会将引用文本的全部内容解释为可执行文件名称,这当然会导致“找不到文件”错误。
那么现在执行此操作的正确方法是什么?
答案1
说明书上有提示:
--command
,-e=COMMAND
以与 shell 相同的方式将此选项的参数拆分为程序和参数,并在终端内执行生成的命令行。此选项已弃用。相反,应使用
--
来终止选项,并将程序和参数放在其后执行:例如,不使用gnome-terminal -e "python3 -q"
,而是更喜欢使用gnome-terminal -- python3 -q
。请注意,它
COMMAND
不是通过 shell 运行:它被分割成单词并作为程序执行。如果需要 shell 语法,请使用 形式gnome-terminal -- sh -c '...'
。
(来源,强调我的)
您要运行的命令&&
属于 shell 语法。你需要一个外壳来处理它。所以:
gnome-terminal -- sh -c 'proc.sh && results.sh'