以下這是一段簡單的LINUX SHELL代碼,功能是用於查找當前目錄及其所有目錄中,哪些文件中包括了"html"這四個字符,並將該文件名給打印出來,咋一看這段代碼應該是沒有問題的,但是實際上卻存在着兩個問題,先看下面的代碼吧:
#!/bin/sh
for afile in `find ./ -name "*"`; do
#echo $afile;
if [ -f "$afile" ]; then
wordnum = `cat $afile|grep html|wc -l`;
if [$wordnum -gt 0]; then
echo $afile;
fi
fi
done
1、第一個問題是賦值語句不能夠在變更與值之間有空格,如上面的這一句:
wordnum = `cat $afile|grep html|wc -l`;
如果這樣寫,是肯定會報錯誤的,必須要寫成以下這樣:
wordnum=`cat $afile|grep html|wc -l`;
2、第二個問題是if語句的方括號與判斷條件之間一定要是兩邊都有空格,如這條語句:
if [$wordnum>0]; then
是有問題的,必須寫成下面這樣:
if [ $wordnum -gt 0 ]; then
所以,以下SHELL正確的寫法應該是如下的:
#!/bin/sh
for afile in `find ./ -name "*"`; do
#echo $afile;
if [ -f "$afile" ]; then
wordnum=`cat $afile|grep html|wc -l`;
if [ $wordnum>0 ]; then
echo $afile;
fi
fi
done