我正在运行一个 bash 脚本,其中将参数(文件)的行数附加到另一个文件。它做得正确,但我不断收到一行“total X”,X 是所有行数加在一起的总和。如果参数数量高于某个数字 X,如何添加参数以仅附加总数?这就是我目前所拥有的:
wc -l $@ >> $1
答案1
我认为你不能以多参数形式抑制总数。
我能想到的最简单的方法是在需要时坚持使用单参数形式:
if [ "$#" -lt 5 ]
then
for f in "$@"; do wc -l -- "$f"; done >>"$1"
else
wc -l "$@" >> "$1"
fi
答案2
wc
如果行数太少而无法获得总计,请从输出中删除最后一行。
word_counts=$(wc -l -- "$@")
newline='
'
if [ "$#" -le 9 ]; then
word_count=${word_count%"$newline"*}
fi
printf '%s\n' "$word_count" >>"$1"
请注意其他变量替换中及其周围的双引号"$@"
,如果没有这个,您的脚本将在包含空格(和其他一些特殊字符)的文件名上中断,而绝对不会带来任何好处。另请注意--
,wc -l -- "$@"
如果文件名以 a 开头-
(如果没有--
,wc
则会将该文件名解释为选项)。