linux - 使用 bash 脚本和使用 case 语句

标签 linux bash shell ubuntu fedora

我正在尝试创建一个 bash 命令,您可以在其中输入 1 到 12 之间的数字,它使用 switch 命令,但在 bash shell 中使用 case 命令。我只需要确保我对此有正确的想法,或者我是否完全关闭了

#!/bin/bash
1="January"
2="February"
3="March"
4="April"
5="May"
6="June"
7="July"
8="August"
9="September"
10="October"
11="November"
12="December"
case "1" in
print "$1"
case "2" in
print "$2" 
case "3" in
print "$3"
case "4" in
print "$4"
case "5" in
print "$5"
case "6" in
print "$6"
case "7" in
print "$7"
case "8" in
print "$8"
case "9" in
print "$9"
case "10" in
print "$10"
case "11" in
print "$11"
case "12" in 
print "$12"
echo "Please enter a number 1 through 12"
read input_variable
echo "$input_variable"

最佳答案

我不敢说你有点不对劲。这是更像它的东西:

#!/bin/bash

echo "Please enter a number 1 through 12"
read input_variable

case $input_variable in
    1) 
        echo "January"
        ;;
    2) 
        echo "February"
        ;;
    3) 
        echo "March"
        ;;
    4) 
        echo "April"
        ;;
  # 5), 6) etc.
    *) # anything else
        echo "not recognised" 
        ;;
esac

@Charles Duffy 是对的,您实际上不需要为此使用 case。您可以改为使用这样的数组:

编辑:在我写这篇文章时,我看到@devnull 有了改进!

#!/bin/bash

echo "Please enter a number 1 through 12"
read input

months=( January February March April May June July August September October November December )

[ $input -gt 0 -a $input -le 12 ] && echo "${months[input-1]}"

或者如果你愿意,在数组的开头使用一个虚拟条目(感谢@chepner)

months=( "" January February March April May June July August September October November December )

[ ! -z "${months[input]}" ] && echo "${months[input]}"

关于linux - 使用 bash 脚本和使用 case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22791244/

相关文章:

linux - 网络脚本不起作用。 CentOS 2.6

c - Linux下共享内存映射

json - Linux bash 解析 json : Get first & last date

linux - 狂欢 : "done" unexpected (expecting "fi")

bash - 如何在每一行前添加一个用 awk 找到的模式实例

Linux shell 脚本 - 如何切换用户并运行脚本?

linux - 如何处理带空格的路径变量

php - 如何使用 Unix 命令或 php 获取与给定 ip 地址关联的所有域?

bash - 包含变量的 sed 命令不起作用

windows - 在 Windows 中的 Git bash 中全局运行 shell 脚本