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 Avi Avi

来自“Blue Moon”的答案将 strings=$* 更改为 strings=($*)

它可以工作

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 回答