shell脚本grep来grep一个字符串

时间:2013-05-09 18:05:51

标签: bash grep

以下脚本的输出为空白。缺少什么?我正在尝试grep一个字符串

#!/bin/ksh    
file=$abc_def_APP_13.4.5.2    
if grep -q abc_def_APP $file; then
 echo "File Found"
else
 echo "File not Found"
fi

2 个答案:

答案 0 :(得分:9)

bash中,使用字符串<<<重定向('Here string'):

if grep -q abc_def_APP <<< $file

在其他shell中,您可能需要使用:

if echo $file | grep -q abc_def_APP

我将then放在下一行;如果您希望then位于同一行,请在我写完之后添加; then


请注意这项任务:

file=$abc_def_APP_13.4.5.2

很奇怪;它获取环境变量${abc_def_APP_13}的值并将.4.5.2添加到结尾(它必须是env var,因为我们可以看到脚本的开头)。你可能打算写:

file=abc_def_APP_13.4.5.2

通常,您应该将对包含文件名的变量的引用括在双引号中,以避免文件名中的空格等问题。这里并不重要,但良好实践是良好实践:

if grep -q abc_def_APP <<< "$file"
if echo "$file" | grep -q abc_def_APP

答案 1 :(得分:3)

呸!使用shell的字符串匹配

if [[ "$file" == *abc_def_APP* ]]; then ...