Pur*_*ret 7 shell watch quoting variable-substitution
我的部分工作涉及一些数据处理。其中一项任务是“展平”一组目录(我们现在将其称为Dir),并将它们复制到一个名为 DirFlat 的新位置。
这可能需要很长时间(30 分钟 -> 2-3 小时)!我希望能够看到进度,所以我find Dir -type f|wc -l用来获取文件的数量(让我们称之为$Filenum,然后我运行一个我写的非常短的命令(从我的笔记本重新输入,可能复制错了,我希望你明白要点):
echo $(echo "($ls DirFlat |wc -l)*100/$FileNum"|bc) "%" $(date)
但是,如果我运行watch -n 100 "!!"它会获取回声的输出,并继续打印(即使日期没有改变)。
我可以用它来刷新变量/重新运行 BASH 中内部变量的分配吗?希望这将帮助我自动化我的一些任务。
对比:
$ watch -n 1 "echo $(date)"
Every 1.0s: echo Sat Apr 27 03:10:50 CEST 2013
$ watch -n 1 'echo $(date)'
Every 1.0s: echo $(date)
Run Code Online (Sandbox Code Playgroud)
您所做的是运行echo "($ls DirFlat |wc -l)*100/$FileNum"|bcand date,将每个命令的输出替换为 shell command watch -n 100 "echo $(…) % $(…)",然后运行它。您需要防止在父 shell 中扩展命令,而是将其作为字符串传递watch给它以使其运行。这是在命令周围使用单引号而不是双引号的简单问题。
| 归档时间: |
|
| 查看次数: |
5151 次 |
| 最近记录: |