检查变量是否设置和grep

时间:2014-06-04 16:41:10

标签: bash grep

我有三个变量$ a,$ b,$ c。我不知道是否设置了三个变量。我只想在设置变量的情况下在GREP查询中使用变量。我该怎么做呢?

find . -iname "*.txt" -type f | xargs grep -inw "$a" -sl | xargs grep -inw "$b" -sl |  xargs grep -inw "$c" -sl
find .* -iname "*.txt" -type f | xargs grep -iw "$a|$b|$c" -sl

1 个答案:

答案 0 :(得分:1)

您可以在阵列上准备多个-e参数:

args=()
for x in "$a" "$b" "$c"; do
    [[ -n $x ]] && args+=(-e "$x")
done
[[ ${#args[@]} -gt 0 ]] && find . -iname "*.txt" -type f | xargs grep -iw "${args[@]}" -sl

注意:-e "$a" -e "$b" -e "$c" 几乎"($a|$b|$c)"同义,可能更安全。此外,如果您不打算" $ a"," $ b"," $ c"要解析为正则表达式,您只需使用fgrep或添加选项-F; "($a|$b|$c)"无法完成的任务。