当有人向我发送邮件时,我有以下脚本来提醒我:
cd /var/mail
watch -g ls && cat end
./alert
end
将是一个空白文件;当我回家时,我会end
从另一个 shell 修改文件,脚本将由于-g
切换而结束。
然后我意识到,与其打开另一个 shell,我可以简单地告诉脚本我回家的时间,那时它会end
自行修改文件。当我这样做并发watch
送到后台时,脚本会按预期终止。但是,脚本退出后,shell 会启动各种奇怪的行为。最简单的错误示例:
( watch -g cat end ) &
sleep 2
echo y >> end
我想我会使用不同的应用程序来避免这个错误。但是,我的系统(Debian)bash
上konsole
似乎都有这个问题。
我应该补充一点,直接从命令行运行上述代码似乎确实可以按预期工作。只有在脚本中运行时才会产生这种奇怪的行为。
同时写入屏幕的两个进程可能会搞砸。尝试追加
之后
echo y
,它应该将终端重置为正常。也许在它之前也添加一个短暂的睡眠,所以在重置运行后手表无法运行。更新:如果您对 的输出不感兴趣
watch
,只需将其 stdout 和 stderr 都重定向到无处:然后它不会弄乱屏幕,你也不需要任何重置。