使用 wc -l 计算 rsync 输出

使用 wc -l 计算 rsync 输出

当我运行 bash 脚本时,我想知道有多少个文件被移动了rsync

我考虑做这样的计算 $(rsync -avz ./* ./ | wc -l)-4

减 4 是因为 rsync 总是输出有关传输的默认统计数据。

bash 显然不能这样工作。

任何其他方法都值得赞赏!

答案1

$(( ))数学表达式可以通过扩展(或旧的等效方法)来完成$[ ]

lines=$(rsync -avz ./* ./ | wc -l)
files=$(( lines - 4 ))

(您实际上可以$( )在里面直接使用$(( )),但以后阅读起来会更加困难。)

也可以使用内部赋值来完成(( ))

lines=$(rsync -avz ./* ./ | wc -l)
(( files = lines - 4 ))

如果files变量被声明为整数,则这将自动进行:

declare -i files=lines-4

相关内容