当我运行 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