在Shell脚本变量中搜索字符串

log*_*gan 3 unix shell

我有一个shell脚本变量

$a = "Hello i am pass"
Run Code Online (Sandbox Code Playgroud)

现在我想pass在变量中搜索" " $a.

if ["$a" == "pass"]; then
echo "`Success`" 
else 
echo "`fail`"
fi
Run Code Online (Sandbox Code Playgroud)

请给我一个shell脚本,用于在上面的代码中搜索pass关键字.

sat*_*sat 12

试试这个,

#!/bin/bash
a="Hello i am pass";
if [ `echo $a | grep -c "pass" ` -gt 0 ]
then
  echo "Success"
else
  echo "Fail";
fi
Run Code Online (Sandbox Code Playgroud)

  • 我认为`grep`比使用`awk`接受的答案更安全.在Solaris上,他可能需要`nawk`; 在OS X上,他可能需要从端口使用`gawk`. (6认同)

小智 5

flag=`echo $a|awk '{print match($0,"pass")}'`;

if [ $flag -gt 0 ];then

    echo "Success";
else
    echo "fail";

fi
Run Code Online (Sandbox Code Playgroud)


Ric*_*nne 5

这是一个更紧凑的方式来写这个:

echo "$a" | grep "pass" && echo "Found." || echo "Not found."
Run Code Online (Sandbox Code Playgroud)

您可以使用括号来放入多个指令而不是简单的echo:

echo "$a" | grep "pass" && (echo "Found.";exit 0) || (echo "Not found.";exit 1)
Run Code Online (Sandbox Code Playgroud)