我想每 10 分钟创建一个文件,在创建文件后,另一个程序将用新名称覆盖它,因此应通过以下脚本创建一个新文件:
#!/bin/bash
echo
while true
do
cat >> trn
echo creating trn
sleep 600
done
当我运行它时,它会创建第一个文件,不回显该语句然后保持循环而不创建更多文件。
最佳答案
不要为此使用 cat >> trn
。它实际上阻止了脚本的执行(等待用户输入)!
您可以改用(例如)
touch trn
或 >> trn
(将创建带有空内容的 'trn' 文件,仅当不存在时) echo > trn
(将使用一个换行符内容创建/覆盖“trn”文件) echo -n > trn
或 printf ''
(更便携)或简单的 > trn
(将创建/覆盖带有空内容的 'trn' 文件) 感谢@CharlesDuffy 的启发性评论。 Info here 关于
printf ''
优于 echo -n
的更好的可移植性。如果您的系统支持
watch
命令,那么有一个更简单的选项可以替换您的整个脚本(在评论中归功于 @Qback):watch -n 600 touch trn
关于bash 每 10 分钟创建一次文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48229907/