nohup (...) 中的语法错误

You*_*ika 5 shell bash nohup subshell

我正在尝试nohup通过在后台执行命令并注销并重新登录并期望命令的输出在nohup.out文件中来测试bash shell 中的命令。这是我要执行的命令:

$ nohup (sleep 120; echo "job done") &
Run Code Online (Sandbox Code Playgroud)

但我不断收到错误消息:

bash: syntax error near unexpected token `sleep`
Run Code Online (Sandbox Code Playgroud)

Mic*_*mer 17

nohup命令是不是一个关键字; 不能给它一个子shell作为要运行的命令,而是需要一个实际的可运行命令:

nohup bash -c 'sleep 120; echo "job done"' &
Run Code Online (Sandbox Code Playgroud)

Bash 给你一个语法错误,因为它认为你正在尝试声明一个名为“nohup”的函数,这是唯一一种在命令行的第二个单词中可以出现裸括号的情况:

nohup () { ... ; }
Run Code Online (Sandbox Code Playgroud)

错误消息告诉您(含糊地)它希望在那里看到正确的括号,而不是“睡眠”这个词。