我在CygWin中使用这个脚本:
#!/bin/sh
rm -f nplist.txt
find . -name "*.html"| while read file; do
awk '
/titleTable/ { if (NR==53) match1=1 }
/id="maincontainer"/ { if (NR==169) match2=1 }
{ if (match1 && match2) exit 69 }
' file
if test $? -eq 69; then
echo $file
sed -i '53,121d; 166,168d' $file
else
echo $file >>nplist.txt
fi
done
..和终端告诉我:
/cygdrive/c/1/test.sh: line 14: syntax error near unexpected token `done'
/cygdrive/c/1/test.sh: line 14: `done'
为什么呢?拜托,有人帮助我!
答案 0 :(得分:0)
Linux上的Bash 4.2.45执行脚本没有问题。请检查帖子中的脚本文本是否与您的文件匹配。检查文件中是否有任何特殊字符在传输到帖子文本时丢失。尝试简化脚本,逐个删除命令并检查它是否开始工作。
否则,我发现您的脚本存在一个问题:awk接收文字字符串file
作为要操作的文件,而不是$file
变量值。