0

比較したい2つの式があるので、次のように書きました。

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 アビ アビ

「Blue Moon」からの回答文字列=$*を文字列=($*)に変更

それは動作しますthnx

4

2 に答える 2

0

結果は空ではありません:

$ 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
于 2013-12-22T20:35:51.930 に答える
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
于 2013-12-22T20:38:26.563 に答える