Shell脚本中count=$(($count + $(wc -w $file)))报错的修复方案
Shell变量累加文件单词数的报错修复
你的报错原因是wc -w $file命令会同时输出单词数和文件名(比如55 test.txt),直接把这个结果代入算术表达式时,文件名会被当成无效的表达式 token,导致语法错误。以下是几种修复方法:
方法1:通过重定向让
wc只输出数字
当用输入重定向< "$file"时,wc不会显示文件名,仅返回单词数:count=$(($count + $(wc -w < "$file")))方法2:提取
wc输出的第一个字段
用awk或cut截取wc输出的数字部分:# 用awk提取 count=$(($count + $(wc -w "$file" | awk '{print $1}'))) # 用cut截取 count=$(($count + $(wc -w "$file" | cut -d' ' -f1)))方法3:改用
grep统计单词数(可选)
如果你不需要严格匹配wc的统计规则,也可以用grep统计单词数量:count=$(($count + $(grep -cE '\w+' "$file")))
另外注意:变量file最好用双引号包裹("$file"),避免文件名包含空格或特殊字符时出现问题。
内容的提问来源于stack exchange,提问作者skltynve
相关产品推荐
相关产品推荐

