【发布时间】:2015-02-26 17:15:55
【问题描述】:
我正在尝试使该程序正常运行,但我做不到。我想在重命名命令中使用的 $2 变量采用 Select Opt 分配的内容。在 Select Opt 结构中,有什么方法可以在重命名命令中使用 $1、$2 变量?
OPTIONS="\"Quit\" \"Replace\""
echo $OPTIONS
eval set $OPTIONS
select opt in "$@"; do
if [ "$opt" = "Quit" ]; then
echo done
exit
elif [ "$opt" = "Replace" ]; then
ls
echo "old pattern"
read OLD
echo "new one"
read NEW
rename -n "s/($OLD)(.*)/$NEW$2/" *.jpg
最终结果在
rename -n "s/($OLD)(.*)/$NEW$2/" *.jpg
是 $NEW 和字符串“替换”而不是 (.*) 部分。
感谢您的帮助。
编辑:我已根据 skmrx 的建议修改了代码。现在结果不同了,$1, $2 是空的。重命名命令没有使用它们,代码仍然不起作用。
OPTIONS=("Quit" "Replace")
echo "${OPTIONS[@]}"
select opt in "${OPTIONS[@]}"; do
if [[ "$opt" = "Quit" ]]; then
echo done
exit
elif [[ "$opt" = "Replace" ]]; then
ls
echo "old pattern"
read OLD
echo "new one"
read NEW
rename -n "s/($OLD)(.*)/$NEW$2/" *.jpg
else
clear
echo bad option
fi
done
说明
rename -n "s/($OLD)(.*)/$NEW$2/" *.jpg
仅使用 $NEW 变量的内容执行,并且 $2 保持为空且没有文本。
【问题讨论】:
标签: bash select rename options