有相當多的異常...
1)您正在使用您的grep的擴展正則表達式。所以你應該使用
-E option
。
2)在你的find命令,而不是引用的3210做
\;
3)既然你放置腳本在你的bin/bash的目錄,確保路徑添加到您的PATH環境變量。其他方法是提供腳本所在的整個路徑。
4)您的if then else
循環中沒有echo
語句。
5)在您的find命令中,您需要提供要查找文件的路徑。使用.
作爲當前目錄。例如find . -type f -exec ./script.sh {} \;
我對腳本進行了以下更改(您可以添加自己的RegEx)。這是我得到的 -
[jaypal~/Temp]$ cat script.sh
#!/bin/bash
if grep -E '[a-zA-Z]*' ${1} >/dev/null
then
echo "!!! $1 is malware!!!"
else
echo " $1 is fine."
fi
輸出:
[jaypal~/Temp]$ find . -type f -exec ./script.sh {} \;
./.mp3 is fine.
./1 is fine.
!!! ./a.sh is malware!!!
!!! ./ab.sed is malware!!!
!!! ./b.sh is malware!!!
!!! ./backup/GTP_Identifier.sh is malware!!!
!!! ./backup/GTP_Parser.sh is malware!!!
!!! ./backup/split.pl is malware!!!
!!! ./backup/T20111017153052.NEW is malware!!!
!!! ./backup/T20111025172411.NEW is malware!!!
!!! ./backup/T20111107193400.NEW is malware!!!
哦,我...第一行是不應該在腳本中去:) – sehe
大聲笑,這是一個錯字! – algorithmicCoder
嘗試使用腳本的完整路徑。例如:/home/xx/is-it-malware.sh – malletjo