尝试为安装程序的用户提供选项以选择“开发”或“稳定”。默认情况下,安装程序执行“git checkout 1.1.0”,但我将1.1.0转换为$ GIT_VERSION,并尝试在开头设置一个干净的方法。
尝试将$GIT_VERSION
设置为master
或1.1.0
,选项为1,2或3(3表示退出)。我有一个粗略的开始,我正在努力...
PS3='Do you want to install Lastest Stable or Latest Development: '
options=("Stable" "Development" "Quit")
select $GIT_VERSION in "${options[@]}"
do
case $GIT_VERSION in
"Stable")
$GIT_VERSION=1.1.0
echo "Installing 1.1.0..."
;;
"Development")
$GIT_VERSION=master
echo "Installing latest development version..."
;;
"Quit")
break
;;
*) echo invalid option;;
esac
done
在同一脚本中安装和配置依赖项后,选项将在后面用作git checkout $GIT_VERSION
。
这可能是一个更好的解决方案......
PS3="<b>Latest Stable</b> recommended for production servers
<b>Development Snapshot</b> intended for testing purposes
What version to you wish to install: "
select option in Latest\ Stable Development\ Snapshot Quit
do
case $option in
Latest\ Stable)
$GIT_VERSION=1.1.0
echo "Install set to Latest Stable...";;
Development\ Snapshot)
$GIT_VERSION=master
echo "Install set to Development Snapshot...";;
Quit)
exit;
esac
done
答案 0 :(得分:2)
不要 * 在作业的LHS上使用$
:
$GIT_VERSION=1.1.0
GIT_VERSION=1.1.0
此外,'开发'只有3个e,而不是4个。
select
重新阅读GNU Bash Manual中的select
后,
我认为这应该或多或少地有效:
STABLE_VERSION=1.1.0
GIT_VERSION=$STABLE_VERSION
PS3='Do you want to install Latest Stable or Latest Development: '
options=("Stable" "Development" "Quit")
select release in "${options[@]}"
do
case "$release" in
"Stable")
GIT_VERSION=$STABLE_VERSION
echo "Installing stable version $STABLE_VERSION..."
;;
"Development")
GIT_VERSION=master
echo "Installing latest development version..."
;;
"Quit")
break
;;
*) echo invalid option;;
esac
done
这将控制select
的变量与控制安装的变量分开。它还避免重复1.1.0,因此您可以在一个地方更改为1.1.1或1.2.0 - DRY原则的变体:不要重复自己。
*
可以在LHS上使用$
,但您需要知道自己在做什么,而且更多的是错误而非正确。在当前的bash
或ksh
shell中,它基本上不起作用(找不到名称中带有等号的命令)。如果您发现了一个过时的Bourne shell,我相信(但现在无法证明)如果GIT_VERSION
包含ABC_XYZ
之类的字符串,那么$GIT_VERSION=1.1.0
会将1.1.0
分配给变量ABC_XYZ
。这仍然不是预期的行为,这是带回家的主要观点。其余的是esoterica,你最好不要知道。
答案 1 :(得分:1)
bold=`tput bold`
normal=`tput sgr0`
PS3="
${bold}Latest Stable${normal} recommended for production servers
${bold}Development Snapshot${normal} intended for testing purposes
What version do you want to install: "
echo -e "\r\n"
select option in "Latest Stable" "Development Snapshot" "Quit"
do
case $option in
"Latest Stable")
GIT_VERSION=1.1.0
echo "Install set to Latest Stable..."
break;;
"Development Snapshot")
GIT_VERSION=master
echo "Install set to Development Snapshot..."
break;;
"Quit")
exit;
esac
done
在克隆分支
时,使用$GIT_VERSION
在脚本中获取版本值