执行脚本时没有这样的文件或目录

时间:2011-11-24 00:36:07

标签: linux bash

我有一个文件夹bin / bash,其中我放了这个脚本:mal_test.sh

if grep 'php \$[a-zA-Z]*=.as.;' "$1" >/dev/null
then
    "!!! $1 is malware!!!"
else
    "    $1 is fine."
fi

我从另一个目录运行以下命令:

find -type f -exec ./mal_test.sh '{}' ';'

但我收到错误查找:./mal_test - 没有这样的文件或目录

我猜这个脚本被解释为一个文件......我该修复什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

有很多异常......

1)您在grep中使用扩展正则表达式。所以你应该使用-E option

2)在您的find命令中,而不是引用';'执行\;

3)由于您将脚本放在bin / bash目录中,请确保将该路径添加到PATH环境变量中。其他方法是提供脚本所在的整个路径。

4)echo循环中没有if then else个陈述。

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!!!