Bash 参数扩展
Bash Parameter expansion
我正在尝试使用用户输入编写 bash-脚本。脚本获取用户输入并使用来自输入的数据构建查找命令(如果它们不为空则使用参数)。我正在阅读 here 的 bash 扩展,我做了类似的事情:
eval find $USERPATH "${USERNAME:+'-name' \"$USERNAME\"}" "${USERSIZE:+'-size' \"$USERSIZE\"}" "${USERDATA:+'-mmin' \"$USERDATA\"}"
效果很好,但我想按内容搜索,所以我需要添加
-exec fgrep -l $USERCONTENT {} \;;
但我不能。我正在尝试这样的事情
"${USERCONTENT:+'-exec fgrep -l' \"$USERCONTENT {}\;;'\"}"
但它不起作用。我不知道如何才能很好地做到这一点。
将参数收集到数组中要简单得多。
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[@]}"
我正在尝试使用用户输入编写 bash-脚本。脚本获取用户输入并使用来自输入的数据构建查找命令(如果它们不为空则使用参数)。我正在阅读 here 的 bash 扩展,我做了类似的事情:
eval find $USERPATH "${USERNAME:+'-name' \"$USERNAME\"}" "${USERSIZE:+'-size' \"$USERSIZE\"}" "${USERDATA:+'-mmin' \"$USERDATA\"}"
效果很好,但我想按内容搜索,所以我需要添加
-exec fgrep -l $USERCONTENT {} \;;
但我不能。我正在尝试这样的事情
"${USERCONTENT:+'-exec fgrep -l' \"$USERCONTENT {}\;;'\"}"
但它不起作用。我不知道如何才能很好地做到这一点。
将参数收集到数组中要简单得多。
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[@]}"