【发布时间】:2014-04-23 08:44:30
【问题描述】:
我正在尝试使用“case”结构来提供选项,并使用“if”来实际执行操作。我在脚本方面非常陌生,所以请原谅我缺乏知识。为简化起见,我将跳过代码中的所有 cmets,仅使用该脚本的 1(一个)选项。
#!/bin/sh
echo " 01. Select a new hostname"
read -p "Make your selection: " varSelection
case $varSelection in
1)
read -p "$(echo -e 'Enter hostname here: \n')" varHostName
read -p "¿Are u sure u want to use \" $varHostname \"? (y/n)"varHostNameRight
if [ $varHostNameRight == y ]; then
sed -i "s/^\(HOSTNAME\s*=\s*\).*\$/\1$varHostName/" /etc/sysconfig/network
hostname $varHostName
else
if [ $varHostNameRight == n ]; then
fi
;;
esac
在这个例子中,我想要实现的是,如果用户在“04”行选择“y”,在执行第 6 行和第 7 行后,他返回到“case”菜单(实际上,还有更多选项在 1)) 以外的情况下,我不知道该怎么做:S 在我的脚本中应用每个选项后,我必须重新运行它以选择其他选项。
另外,如果用户在“04”行选择“否”,我想“循环”到“03”行……但我不知道该怎么做:(
拜托,任何帮助都非常受欢迎!
最好的问候,
塞巴斯
【问题讨论】:
-
请不要在代码中插入行号。如果您需要引用特定行,请添加注释。不要忘记将您的代码格式化为代码(突出显示它并点击 {} 图标)。
-
感谢您修复它!对不起:S
-
所以,一个明显的问题是您实际上并没有为您的
case语句编写任何可能的匹配项。有关case用法的一个很好的示例,请参阅 here。 -
嗨 dg99!感谢您的评论!我一定错过了复制它。代码按预期工作,直到“if [ $varHostNameRight == n ]; then”,因为我不知道如何告诉脚本“跳”回它首先询问“在此处输入主机名”的行。跨度>