行超出脚本错误

时间:2013-11-15 21:38:05

标签: bash unix vim line

我试图在bash中写一个通知时间的脚本 用户在文件中超过了90个字符。 你能帮我理解我的错误吗? 为什么在VIM中运行脚本时shell返回1?

#!/bin/bsh

# Init. the index
nIndexReadLine=1

# The num. of lines in the file
nLinesNum=`cat % | wc -l`

# Runs through all the lines of the file

while [ $nIndexReadLine -le $nLinesNum ]
do
    line=`head -$nIndexReadLine %`

    # Checks if the line exceeded 90 chars
    if [ wc -c $line -g 90 ]; then
        echo line $nIndexReadLine exceeded 90 chars!
    fi
done

谢谢!

2 个答案:

答案 0 :(得分:0)

您的脚本充满了语法错误。我建议你阅读BASH脚本。

同时为了你的任务,你可以使用awk:

awk -v m=90 'length($0)>m{print "line " NR " exceeded " m " characters"}' file

答案 1 :(得分:0)

如果要在Vim中打开的文件上运行它,则不需要外部工具;你可以用一行Vimscript做到这一点:

:global/^.\{90,}/echo 'line' line('.') 'exceeded 90 chars!'

这将正则表达式(^.\{90,} =匹配行开头的90个或更多字符)应用于当前缓冲区:global中的所有行,如果匹配{{1}消息。