Answers:
尝试这个:
foo1=$(curl https://domain.com/file.xml | grep -E "string1|string2")
这将运行curl
1次,并在出现string1
或时运行grep string2
。
如果它们是不同的变量,则略微改变策略。捕获curl
然后的输出grep
。
output=$(curl https://domain.com/file.xml)
foo1=$(echo "$output" | grep "string1")
foo2=$(echo "$output" | grep "string2")
您也可以将结果存储在数组中,而不是单独的变量中。
output=$(curl https://domain.com/file.xml)
readarray foo < <(echo "$output" | grep "string1|string2")
如果来自grep的结果可能不会返回结果,那么这会有些棘手,因为“ string2”的结果可能是数组中的第一项或第二项,但是我在这里提供它只是为了说明该方法。
另一种利用read
命令和进程替换(<( ..cmd..)
)的方法。
$ read -d"\n" foo1 foo2 \
<(curl https://domain.com/file.xml | grep -E "string1|string2")
如果对“ string1”的搜索未返回任何内容,从而导致对“ string2”的任何匹配都显示在中,那么这又可能是棘手的$foo1
。同样,这种方法往往比上面的#2或#3更具便携性。