在所有参数被接受的脚本上运行nohup命令

14

我正在尝试使用nohup运行一个脚本,但该命令需要一整行包含变量$*的参数。我尝试以以下方式运行该命令:

    nohup time ./build_all all &

但是这样会在nohup.out中产生以下错误:

./build_all: DISPLAY=ted:0.0: is not an identifier

求助任何帮助。

Ted

==================================================================================

我意识到Peter John Acklam是正确的。 错误不是因为nohup,而是因为脚本。 我不确定自己做错了什么,因为语法在我看来似乎是正确的。 当我单独运行该脚本时,也有些奇怪的是我看不到错误,但是当我尝试使用nohup运行时,就会出现奇怪的错误。

总之,脚本的开头如下所示:

#!/bin/bash

export DISPLAY=ted:0.0 # sets the display
export RELEASE=v1.0

node=`uname -n`
2个回答

12

只需像其他命令一样,在命令行中放置“build_all”的参数:

nohup time ./build_all args to build_all go here &

参数将被传递到“build_all”,而不是“time”或“nohup”。这个 & 符号会被 shell 正确解释,不会作为任何命令的参数被传递。


很奇怪,当我尝试时似乎没有起作用。错误可能出现在其他地方。 - Flethuseo
我按照你的建议做了,但是实际上我在DISPLAY变量上得到了一个奇怪的错误。 - Flethuseo
“DISPLAY”变量错误是由于“build_all”中的语法错误引起的,与“nohup”或“time”无关。也许你可以展示一下包含字符串“DISPLAY=ted:0.0”的“build_all”中的那一行? - Peter John Acklam
好的,看起来是这样的: #!/bin/bashexport DISPLAY=ted:0.0 # 设置显示器 export RELEASE=v1.0node_name=uname -n - Flethuseo
错误出现的原因是你在一个bash期望标识符(即可用作变量、函数等名称的东西)的地方使用了“DISPLAY=ted:0.0”。上面代码中的语法是正确的。我怀疑错误可能出现在你的脚本更深处。 - Peter John Acklam

1
脚本参数(参数)只需跟随脚本名称并在“&”之前。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接