Linux 如何创建具有“退出并继续”选项的while do done脚本?
我正在尝试找出如何在bash中创建while do done脚本,该脚本将允许我选择选项1-4,如果使用1-4,将允许我再次选择按“n”退出或按任意键继续。谢谢你的任何意见,我非常感谢Linux 如何创建具有“退出并继续”选项的while do done脚本?,linux,bash,shell,Linux,Bash,Shell,我正在尝试找出如何在bash中创建while do done脚本,该脚本将允许我选择选项1-4,如果使用1-4,将允许我再次选择按“n”退出或按任意键继续。谢谢你的任何意见,我非常感谢 #!/bin/bash #while-do-done RED='\033[0;31m' NC='\033[0m' #options 1-4 have options, option 5-x is else command echo "Type one of the following:" echo "1 - w
#!/bin/bash
#while-do-done
RED='\033[0;31m'
NC='\033[0m'
#options 1-4 have options, option 5-x is else command
echo "Type one of the following:"
echo "1 - whoami"
echo "2 - df"
echo "3 - date"
echo "4 - cal"
echo -n "select option:"
read option
while [ $option == "1" ]
whoami
echo "Enter another command?"
echo "Press 'n' to exit. Any key to continue"
if [ $option == "n" ]
then exit
fi
while [ $option == "2" ]
df
while [ $option == "3" ]
date
while [ $option == "4" ]
cal
while [ $option == * ]
printf "${RED} You made an invalid selection. Exiting.${NC}"
exit 0
我想这就是你想要的
#!/usr/bin/env bash
RED='\033[0;31m'
NC='\033[0m'
showmenu() {
echo "Type one of the following:"
echo " 1 - whoami"
echo " 2 - df"
echo " 3 - date"
echo " 4 - cal"
}
# Your loop starts here.
while true; do
showmenu # This calls the function above.
read -p "Enter selection: " option
case "$option" in
1) whoami ;;
2) df ;;
3) date ;;
4) cal ;;
*)
echo "${RED}Invalid selection. Exiting.${NC}"
break # Quit the loop, resuming execution after "done"
;;
esac
read -p "Enter another command (y/n)?" cont
case "$cont" in
N*|n*) break ;; # Quit the loop, resuming execution after "done"
*) continue ;; # Restart the loop. Not strictly necessary here,
# since there's nothing left to skip before "done".
esac
done
echo "I quit."
顺便说一下,这个脚本的大部分不需要bash;您可以在大多数系统上使用
/bin/sh
运行它。请先使用shellcheck.net修复更明显的错误。空格对shell很重要。那些if
和while
行上的[
和]
不是语法括号[
是一个实际的命令。因此[
和]
在它们周围需要空格。@chepner“明显错误”到底是什么意思?@Etan所以“if[$option=n]”应该是“if[$option=n]”@Kris如果你像chepner建议的那样将代码放入shellcheck.net,你就会明白chepner的意思“明显的错误。”克里斯,在我看来,你似乎在试图使用<代码>而<代码>却好像是<代码>案例<代码>。在“元代码”中写出你想要的功能可能会很有用——也就是说,用通俗易懂的语言,可以用来更好地描述你真正想要做的事情。你提到“whiledo done”,但你没有在脚本中做“或做”。这正是我所要完成的。我不知道如何去创建一个循环。我看到了很多例子,但没有什么真正的点击。我过去做C++,我真的相信这比我更容易。我非常感谢帮助。C++相当于一个BASH。“语句将是一个“switch”语句。现在很多语言对于完全相同的语法来说都是不同的词汇表。请注意,如果我的答案中的循环条件是true
(在“while”之后),您可以为if
语句设置任何条件。例如,while[$count-lt$limit];do
…您可以在shell中进行人工测试
,以获得可用的测试样本。