2013-12-22 40 views
0

我有2個表情,我希望他們之間進行比較,所以我寫了:如何使用grep在兩個字符串stdin之間進行匹配?

result=(`echo "${strings[0]}" | grep -i -w "${strings[1]}" | wc -w`) 

但是當我回聲導致其空......爲什麼?

的..

更多的代碼:

#!/bin/bash 

function checkStrings { 
    strings=$* 
    result=(`echo "${strings[0]}" | grep -i -w "${strings[1]}" | wc -w`) 
    echo $result ${strings[*]} 
} 

checkStrings "Avi" "Avi" 

輸出: 0阿維阿維

答案從 「藍月亮」 變化串= $ *爲字符串=($ *)

it works thnx

+0

你能給個例子嗎? –

+0

@Allendar沒有理由保留最後一句,因爲在編輯之後顯示反引號(這不是在編輯之前顯示的,這就是爲什麼他首先編寫它的原因)。這不是問題的一部分,我看不出有任何理由。 –

+0

例如: strings = {Avi Avi} 因此wc應該把1放在結果中,但它會把0 – user3036061

回答

0

The結果不是空:

$ strings=(Avi Avi) 
$ r=(`echo "${strings[0]}" | grep -i -w "${strings[1]}" | wc -w`) 
$ echo $r 
1 

只是爲了測試其工作正常,讓我們做到這一點應該有一個零結果的情況下:

$ strings=(Avi2 Avi) 
$ r=(`echo "${strings[0]}" | grep -i -w "${strings[1]}" | wc -w`) 
$ echo $r 
0 
0

不需要定義result以來wc -w回報的陣列單個元素(標量)。

嘗試

result=$(grep -i -w "${strings[1]}" <<< "${strings[0]}" | wc -w) 

*更新*

基於更新的問題,你可以嘗試:

#! /bin/bash 

function checkStrings { 
    strings=($*) 
    result=$(grep -i -w "${strings[1]}" <<< "${strings[0]}" | wc -w) 
    echo $result ${strings[*]} 
} 

checkStrings "Avi" "Avi" 

給輸出:

1 Avi Avi 
相關問題