我有使用grep搜索的参数的GUI检查列表。检查列表时 - 此参数应显示在grep控件选项中。
例如:
w=TRUE or FALSE
s=TRUE or FALSE
N=TRUE or FALSE
L=TRUE or FALSE
我想使用检查表选择的所有组合,例如:
if [ "$w" == TRUE ]; then
grep -w searsch_pattern INFILE
elif [ "$w" == TRUE ] && [ "$s" == TRUE ];then
grep -w -s searsch_pattern INFILE
....
fi
我的问题是如果有可能避免编写所有组合elif语句并找到一些更优雅的解决方案。
PS:我想在grep搜索中使用四个以上的输出控制参数。
感谢您的帮助。
答案 0 :(得分:3)
通常,不,除非每个标志的效果是独立的。您可以尝试在数组中构建grep
的参数。例如:
grep_options=()
if [ $w == TRUE ]; then
grep_options+=( -w )
fi
if [[ $s == TRUE ]]; then
grep_options+=(-s)
fi
# etc.
grep "${grep_options[@]}" search_pattern INFILE
答案 1 :(得分:1)
对于您的示例中的单个选项,您可以尝试:
w=TRUE
s=TRUE
N=FALSE
L=TRUE
for opt in w s N L; do
[[ ${!opt} == "TRUE" ]] && options+=" -${opt}"
done
grep "${options}" searchpattern INFILE