bash 每 10 分钟创建一次文件
bash create file every 10 minutes
我想每 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
我想每 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