我试图在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
谢谢!
答案 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}消息。