cur*_*ous 35 shell shell-script arithmetic
我想累积一个文件夹中包含的多个文件的行大小。我编写了以下脚本:
let a=0
let num=0
for i in folder/*
do
num=`cat $i | wc -l`
a=$a+$num
done
echo $a
Run Code Online (Sandbox Code Playgroud)
我在脚本末尾得到的是 123+234+432+... 而不是加法运算的结果。
man*_*ork 69
您的算术评估语法错误。使用以下任何的(第一个是非常便携,但速度慢,二是POSIX和除了Bourne shell的便携和更早版本的Almquist外壳,最后三个要求ksh
,bash
或zsh
):
a=`expr "$a" + "$num"`
a=$(($a+$num))
((a=a+num))
let a=a+num
((a+=num))
Run Code Online (Sandbox Code Playgroud)
或者您可以跳过整个for
循环并执行以下操作:
wc -l folder/*
Run Code Online (Sandbox Code Playgroud)
或者,如果您只想要总数:
cat folder/* | wc -l
Run Code Online (Sandbox Code Playgroud)
或者使用 zsh 及其mult_ios
选项:
wc -l < folder/*
Run Code Online (Sandbox Code Playgroud)
您也可以使用此代码
a=`expr $a + $num`
echo $a
Run Code Online (Sandbox Code Playgroud)
并确保在 "$a + $num" 的两边都有一个空格