我有一系列目录,其名称按顺序排列(即 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/