iT邦幫忙

DAY 14
6

快快樂樂學會讓電腦幫我做事系列 第 11

[Shell Script] Day14-可以提高if-then-else的 switch case

在介紹 if-then-else 時,不曉得有沒有人發現, if 開頭,結尾就是 fi 呢?沒錯,現在要介紹的 switch-case 他是 case 開頭,esca esac 結尾。也就是把開頭倒著寫就是結尾了,很有趣吧~面白
在一般的判斷式中,我們會選擇 if-then-else 來判斷該怎麼處理,但是如果 if-then-else 太多的話,效率或許就會差那麼一點點,這時候就可考慮接下來介紹的 switch case

在介紹 if-then-else 時,不曉得有沒有人發現, if 開頭,結尾就是 fi 呢?沒錯,現在要介紹的 switch-case 他是 case 開頭,esca 結尾。也就是把開頭倒著寫就是結尾了,很有趣吧~面白

他的格式如下:

case 判斷式 in
	Pattern1 )
		Statements
 ;;
	Pattern2 )
		Statements 
;;
	…
esac

其中,在判斷式的部分就是要看判斷式是 Pattern1 還是 Pattern2

…等等,符合那個就執行那個部分的 Script。

接著我們就來寫個小範例程式,這個程式的目的是會列出目前位置的所有檔

案,並且判斷他們的副檔名為何:

#!/bin/bash

for filename in *
do
    ext=${filename##*\.}
    case "$ext" in
        sh) echo "$filename : bash script."
            ;;
        txt) echo "$filename : Text file."
            ;;
        cpp) echo "$filename : c++ source code."
            ;;
        *) echo "$filename : unknow."
    esac
done

來看看執行的結果吧!!

首先是我們的當前目錄下有這些檔案:

接著執行我們的範例:

有沒有一種電腦幫我們做事的輕鬆愉快感阿~~哈哈

鐵人賽文章分享
13 上一篇 繼續或者跳脫迴圈
15 上一篇 除了互動以外的輸入方式

Ps. 感謝 kenkenzz 大大的指正,

第一段中"case 開頭,esca 結尾"的esca寫錯了 應該是esac


上一篇
[Shell Script] Day13-繼續或者跳脫迴圈
下一篇
[Shell Script] Day15-除了互動以外的輸入方式
系列文
快快樂樂學會讓電腦幫我做事27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言