我需要在bash脚本中从终端读取一个值。我希望能够提供一个用户可以更改的默认值。
# Please enter your name: Ricardo^
在这个脚本中,提示符是“请输入您的名字:”,默认值是“Ricardo”,光标位于默认值之后。有办法在bash脚本中做到这一点吗?
我需要在bash脚本中从终端读取一个值。我希望能够提供一个用户可以更改的默认值。
# Please enter your name: Ricardo^
在这个脚本中,提示符是“请输入您的名字:”,默认值是“Ricardo”,光标位于默认值之后。有办法在bash脚本中做到这一点吗?
当前回答
read -e -p "Enter Your Name:" -i "Ricardo" NAME
echo $NAME
注:
此选项需要bash 4或更高版本(bash——version) 在macos上,使用homebrew - brew.sh安装当前bash -e和-i一起工作:-e使用readline, -i使用readline插入文本 Bash 4+手册页阅读linuxcommand.org
其他回答
read -e -p "Enter Your Name:" -i "Ricardo" NAME
echo $NAME
注:
此选项需要bash 4或更高版本(bash——version) 在macos上,使用homebrew - brew.sh安装当前bash -e和-i一起工作:-e使用readline, -i使用readline插入文本 Bash 4+手册页阅读linuxcommand.org
#Script for calculating various values in MB
echo "Please enter some input: "
read input_variable
echo $input_variable | awk '{ foo = $1 / 1024 / 1024 ; print foo "MB" }'
在Bash 4中:
name="Ricardo"
read -e -i "$name" -p "Please enter your name: " input
name="${input:-$name}"
这将在提示符后显示名称,如下所示:
Please enter your name: Ricardo
将光标放在名称的末尾,并允许用户编辑它。最后一行是可选的,如果用户删除输入或默认值(提交null),则强制名称为原始默认值。
我发现了这个问题,想找个方法来表达:
Something interesting happened. Proceed [Y/n/q]:
利用上面的例子,我推断出:-
echo -n "Something interesting happened. "
DEFAULT="y"
read -e -p "Proceed [Y/n/q]:" PROCEED
# adopt the default, if 'enter' given
PROCEED="${PROCEED:-${DEFAULT}}"
# change to lower case to simplify following if
PROCEED="${PROCEED,,}"
# condition for specific letter
if [ "${PROCEED}" == "q" ] ; then
echo "Quitting"
exit
# condition for non specific letter (ie anything other than q/y)
# if you want to have the active 'y' code in the last section
elif [ "${PROCEED}" != "y" ] ; then
echo "Not Proceeding"
else
echo "Proceeding"
# do proceeding code in here
fi
希望这能帮助别人,如果他们遇到同样的问题,不需要思考逻辑
代码:
IN_PATH_DEFAULT="/tmp/input.txt"
read -p "Please enter IN_PATH [$IN_PATH_DEFAULT]: " IN_PATH
IN_PATH="${IN_PATH:-$IN_PATH_DEFAULT}"
OUT_PATH_DEFAULT="/tmp/output.txt"
read -p "Please enter OUT_PATH [$OUT_PATH_DEFAULT]: " OUT_PATH
OUT_PATH="${OUT_PATH:-$OUT_PATH_DEFAULT}"
echo "Input: $IN_PATH Output: $OUT_PATH"
示例运行:
Please enter IN_PATH [/tmp/input.txt]:
Please enter OUT_PATH [/tmp/output.txt]: ~/out.txt
Input: /tmp/input.txt Output: ~/out.txt