假设我想运行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 的输出。