我有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
来自“蓝月亮”的回答 将strings = $ *更改为strings =($ *)
它适用于thnx
答案 0 :(得分: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
答案 1 :(得分: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