使用 if 评估 bash 命令



我希望创建一个将发送到数据库的删除查询。

我真的没有这样做的模型,所以我在/bigcompany/scripts/dbscripts/目录,看看其他人是如何做到的。

当我使用它时,我得到了一大堆很好的例子,但它没有给我脚本的名称:

cat /bigcompany/scripts/dbscripts/* | grep delete

我想知道具有删除行查询的脚本的名称,以便我可以在脚本的上下文中查看查询。

我试过了:

for i in $(ls /bigcompany/scripts/dbscripts/ )
do 
if [ cat /bigcompany/scripts/dbscripts/$i | grep delete ] 
   then
   echo $i
   fi 
done  

我在想"猫/大公司/脚本/数据库脚本/|grep 删除"评估为成功,脚本将回显包含关键字的脚本名称。

然而,事实并非如此。

你想要一个包含匹配项的文件名列表,所以使用-l来做到这一点(一气呵成,这还有一个额外的优点,那就是避免文件名中的空白和其他古怪字符的问题(:

grep -l delete /bigcompany/scripts/dbscripts/*

如果你正在处理SQL,除非有一个强有力的相反标准,否则你可能也想识别DELETE,所以添加-i(对于不区分大小写(:

grep -l -i delete /bigcompany/scripts/dbscripts/*

没有文件名的原因是因为您需要将它们全部cat一个文件中。如果您允许grep单独搜索它们,它将显示各个文件名:

grep delete /bigcompany/scripts/dbscripts/*

Grep 具有 -H 选项,用于打印每个匹配项的文件名。 作为替代方法,您可以使用 -l 选项,该选项仅打印匹配项的文件名,而不是匹配的文本。

最新更新