我有三个变量$ 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
答案 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)"
无法完成的任务。