2012-06-11 115 views
2

字符串我有一個shell腳本變量搜索在shell腳本變量

$a = "Hello i am pass" 

現在我想在可變$a搜索「pass」。

if ["$a" == "pass"]; then 
echo "`Success`" 
else 
echo "`fail`" 
fi 

請給我shell腳本搜索關鍵字在上面的代碼中使用。

+2

SO不是'寫我一些代碼'的網站。儘管我們很樂意爲您提供自己的代碼,但是如果您嘗試過某些內容並遇到問題,我們將很樂意爲您提供幫助。 – Levon

+0

@Levon,對不起,我不明白你在說什麼。你能清楚嗎? – logan

+0

一般來說,SO是針對您已經編寫的代碼詢問*特定的*問題,而不是一個地方來說,「我有這個問題,請給我寫代碼來解決它」。也許[StackOverflow常見問題](http://stackoverflow.com/faq)可以幫助澄清這一點。 – Levon

回答

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

if [ $flag -gt 0 ];then 

    echo "Success"; 
else 
    echo "fail"; 

fi 
9

這種嘗試,

#!/bin/bash 
a="Hello i am pass"; 
if [ `echo $a | grep -c "pass" ` -gt 0 ] 
then 
    echo "Success" 
else 
    echo "Fail"; 
fi 
+3

我認爲'grep'比使用'awk'接受的答案更安全。在Solaris上,他可能需要'nawk';而在OS X上,他可能需要從端口使用'gawk'。 – jww

5

這裏是寫這一個更緊湊的方式:

echo "$a" | grep "pass" && echo "Found." || echo "Not found." 

你可以用括號把多個指令,而不是一個簡單的echo

echo "$a" | grep "pass" && (echo "Found.";exit 0) || (echo "Not found.";exit 1) 
0

試試這個

a="Hello I am Pass"; 
a1="Hello, Passed my First Attempt" 
a2="Passed in First Attempt" 

if [[ ${a,,} =~ 'pass' ]]; then echo 'Success'; else echo 'First Attempt in Learning'; fi 
+0

我認爲這只是bash,不是嗎? – sehe

0

簡短的命令:

OPC="test" 
PROD="This is a test" 
[[ ${PROD,,} =~ $OPC ]] && echo -n 1 || echo -n 0 

答案將是 「1」 時,發現 「OPC」 中的 「PROD」。