我想每10分钟创建一个文件,在创建文件后,它将被另一个程序用新名称覆盖,所以下面的脚本应该创建一个新文件:
#!/bin/bash
echo
while true
do
cat >> trn
echo creating trn
sleep 600
done
当我运行它时,它会创建第一个文件,不会回显该语句,然后保持循环而不再创建任何文件。
答案 0 :(得分:3)
请勿使用cat >> trn
。它实际上阻止了脚本的执行(等待用户输入)!
您可以改为使用(例如)
touch trn
或>> trn
(将创建包含空内容的'trn'文件,仅当该文件尚不存在时)echo > trn
(将使用一个换行符字符内容创建/覆盖'trn'文件)echo -n > trn
或printf ''
(更便携)或仅> trn
(将使用空内容创建/覆盖'trn'文件)printf ''
比echo -n
更好的可移植性,Info here。
如果你的系统支持watch
命令,那么有一个更简单的选项可以取代你的整个脚本(在评论中归功于@Qback):
watch -n 600 touch trn