Bash参数扩展

时间:2017-03-31 15:39:36

标签: linux bash find variable-expansion

我正在尝试用用户输入编写bash-script。脚本获取用户输入并使用输入数据构建find命令(如果它们不为空,则使用参数)。我正在阅读here中关于bash扩展的内容,我做了类似的事情:

 eval find $USERPATH "${USERNAME:+'-name' \"\$USERNAME\"}" "${USERSIZE:+'-size' \"\$USERSIZE\"}" "${USERDATA:+'-mmin' \"\$USERDATA\"}"

这很棒,但我想按内容搜索,所以我需要添加

-exec fgrep -l $USERCONTENT {} \;;

但我不能。我正在尝试这样的事情

 "${USERCONTENT:+'-exec fgrep -l' \"\$USERCONTENT {}\;;'\"}"

但它不起作用。我不知道我怎么能这样做。

1 个答案:

答案 0 :(得分:4)

在数组中收集参数要简单得多。

find_args=( "$USERPATH" )
[[ -n "$USERNAME" ]] && find_args+=(-name "$USERNAME")
[[ -n "$USERSIZE" ]] && find_args+=(-size "$USERSIZE")
[[ -n "$USERDATA" ]] && find_args+=(-mmin "$USERDATA")
[[ -n "$USERCONTENT" ]] && find_args+=(-exec fgrep -l "$USERCONTENT" {} \;)
find "${find_args[@]}"
相关问题