我想每 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 > trnprintf ''(更便携)或简单的 > trn(将创建/覆盖带有空内容的 'trn' 文件)

  • 感谢@CharlesDuffy 的启发性评论。 Info here 关于 printf '' 优于 echo -n 的更好的可移植性。

    如果您的系统支持 watch 命令,那么有一个更简单的选项可以替换您的整个脚本(在评论中归功于 @Qback):
    watch -n 600 touch trn
    

    关于bash 每 10 分钟创建一次文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48229907/

    10-15 12:21