簡體   English   中英

使用bash腳本並使用case語句

[英]Using bash script and using the case statement

我正在嘗試創建一個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]}"

采用:

read -p "Enter a number between 1 and 12: " input

因為它簡化了代碼。 然后使用:

case $input in 

...如湯姆·費內奇所說

但是,是的,case語句更多地用於針對相同類型的結果進行測試,但是要根據結果來執行不同的操作。 您在這里回顯所有內容,所以是的,將字符串存儲在數組中,然后根據輸入將其輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM