如何让 nohup 执行双引号内的内部命令?

如何让 nohup 执行双引号内的内部命令?

假设我想运行echo嵌套到watch嵌套到nohup

从堆栈底部开始:

echo test

没什么问题。

watch -n 1 'echo test'
watch -n 1 "echo test"

这些都没有问题。

nohup 'watch -n 1 "echo test"'
nohup "watch -n 1 'echo test'"

存在的问题有:

~$ nohup 'watch -n 1 "echo test"'
~$ nohup: ignoring input and appending output to ‘nohup.out’
~$ nohup: failed to run command ‘watch -n 1 "echo test"’: No such file or directory
~$ nohup "watch -n 1 'echo test'"
~$ nohup: ignoring input and appending output to ‘nohup.out’
~$ nohup: failed to run command ‘watch -n 1 'echo test'’: No such file or directory

如何让 nohup 执行双引号内的内部命令?

答案1

nohup不期待任何引号。它不知道如何处理它们。
你想要的命令很简单:

nohup watch -n 1 'echo test'

在这种情况下,你甚至可以不用内部引号:

nohup watch -n 1 echo test

但要注意它的nohup工作原理。它以一种相当原始的方式重定向所有输出。您将无法以完全相同的方式监视 watch 的输出。

相关内容