bash - 更新 bash 中 watch 命令中的变量

标签 bash watch

我有一系列目录,其名称按顺序排列(即 001 002 003 ... 999)。我正在运行一个作业,该作业处理每个目录中的内容,按从 001 升序到 999 的顺序排列。该作业将回显到每个目录中的 output.txt 文件中。当作业完成对目录中内容的处理时,它会将“running DIRECTORY_NAME”回显到父目录中的 job_status.txt 文件,然后继续处理下一个目录。

我想运行一个简单的命令来查看作业当前运行所在目录的output.txt。

我试过了

watch "i=$(tail -n 1 job_status.txt | awk '{print $2}'); tail $i/output.txt"

这最初是有效的;但是,当作业移动到新目录时,watch 命令中的 $i 不会更新,我只能从作业已完成的目录中查看输出文件。

如何解决这个问题?

非常感谢

雅切克

最佳答案

您甚至在 watch 执行之前就扩展了变量。请改用单引号:

watch 'i=$(awk "END { print \$2 }" job_status.txt); tail "$i/output.txt"'

Watch 在执行命令时调用 sh -c,因此定义命令就像使用 sh 调用它一样。

关于bash - 更新 bash 中 watch 命令中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75381174/

相关文章:

bash - 从最后一个管道(stdin)获取退出代码

linux - linux shell 管道是流水线吗?

javascript - $scope 变量发生变化时未触发 Angular $watch

node.js - 如何使用 fs.watch 每次更改目录内容时触发一次?

javascript - $watch 阻止 rootScope 更改

linux - 如何使用 grep 过滤管道信息并在找到单​​词时过滤所有信息

linux - 无法附加到运行 Docker 容器的 bash

linux - 通过 ssh 执行的管道命令的退出状态

python - 有没有办法将回调与列表的更改相关联?

javascript - 监视服务器上的文件夹以查找要压缩的新图像