我有remove.sh
其中包含:
rm -v test.tmp
我有install.sh
其中包含:
script remove.log -c './remove.sh'
我可以做什么,以便无论是否存在,我在屏幕上看test.tmp
不到任何相关消息,但看到脚本命令在其中生成?rm
removed 'test.tmp'
rm: cannot remove 'test.tmp': No such file or directory
remove.log
答案1
如果您的问题是“如何抑制命令的 stderr 输出”,答案将类似于:
command 2> /dev/null
这会将 stderr (又名文件描述符 2)重定向到/dev/null
,它会简单地丢弃它收到的任何内容。
但是,该rm
命令支持该-f
标志,如果文件不存在,这将阻止它生成错误消息:
$ rm file_that_does_not_exist
rm: file_that_does_not_exist: No such file or directory
$ rm -f file_that_does_not_exist
$
答案2
script
对此来说是矫枉过正了。是的,它有效,但这不是脚本的目的。脚本用于直接访问 TTY 且不使用 STDOUT/STDERR 的应用程序。
您可以通过基本的 shell 重定向轻松完成此任务。
./remove.sh &> remove.log