【发布时间】:2018-11-24 15:56:42
【问题描述】:
任何人都可以看看我的这个 bash 脚本吗?我正在尝试使用 bash 脚本查找文件中最长的行,所以我写了这个。
#!/bin/bash
#Francesco Foschi length of a row in a file
let n=0
let max_length=0
while read row
do
length=$(echo -n $row | wc -c)
if[ ${#length} -gt ${#max_length} ]
then
let max_length=${#length}
fi
echo "$n row is $length charachters long"
echo "$row"
let n=n+1
done < $1
echo "longest line is $max_length charachters long"
exit 0
每次我尝试运行控制台时都说我在意外的 then 标记附近有语法错误。我做错了什么??
顺便说一下fedora28的运行
【问题讨论】:
-
你应该在
if后面加一个空格。 -
我建议你检查你的代码在shellcheck.net
-
length="${#row}" -
Bash 是一个极其缓慢和俗气的工具,用于完成这项特殊任务。您想研究在 Awk 中针对任何实际场景重新实现脚本。
-
我回滚了您的最新编辑。 Stack Overflow 上的问题应该仍然是严格的问题;将某事标记为合适答案的方法就是接受一个答案,就像你已经做过的那样。 (如果你想恢复它,question's edit history 仍然包含所有文本。)
标签: bash