这个想法是编写一个bash脚本,它打印当前目录中包含自己内容名称的文件名。
例如,如果一个名为hello的文件包含字符串hello,我们打印hello,我们对当前目录中的所有文件执行此操作
这是我写的,我不知道它为什么不起作用。
#!/bin/bash
for file in *
do
if (cat $file | grep $file) 2> /dev/null
then
echo $file
fi
done
修正:
#!/bin/bash
for file in *
do
if grep $file $file 2> /dev/null
then
echo $file
fi
done
答案 0 :(得分:3)
除了引用问题,潜在的正则表达式转义问题以及无用的cat
和(...)
之外,您的代码原则上应该 。
试试这个版本 - 如果它不起作用,必须继续其他事情:
#!/bin/bash
for file in *
do
if grep -qF "$file" "$file" 2> /dev/null
then
echo "$file"
fi
done
-q
使grep
无法输出匹配的行(退出代码是否隐含了匹配项)。
-F
可确保将搜索字词视为文字(而非正则表达式)。