shell程式設計——case語句
case語句格式
# vi test.sh : echo "input : " read num echo "the input data is $num" case $num in 1) echo "January";; 雙分號結束 2) echo "Feburary";; 5) echo "may" 每個case可以有多條命令 echo "sdfd" echo "sdf";; 但最後一條命令一定是雙分號結束 *) echo "not correct input";; *)是其他值、default的意思 esac |
# sh ./test.sh input : 2 the input data is 2 Feburary # sh ./test.sh input : ter the input data is ter not correct input |
case 語句如果某個選項沒有任何語句,也要加;; 否則會出下邊錯誤
test: line 166: syntax error near unexpected token `)'
test: line 166: `"system hostname config")'
為什麼輸入no,仍不匹配到[no]
原來[]是專門針對單字元的值,如果用[no],就是n和o之一
case $yn in [no]) return 1;; * ) echo "only accept Y,y,N,n,YES,yes,NO,no" >&2;; |
[[email protected] enter y/n : no only accept Y,y,N,n,YES,yes,NO,no |
改正
case $yn in no) return 1;; NO) return 1;; * ) echo "only accept Y,y,N,n,YES,yes,NO,no" >&2;; esac |
[[email protected] ~]$ sh test.sh enter y/n : no |
一個getyn()函式的例子
getyn( ) { while echo "enter y/n :" do read yn case $yn in [Yy]) return 0 ;; yes) return 0 ;; YES) return 0 ;; [Nn]) return 1 ;; no) return 1;; NO) return 1;; * ) echo "only accept Y,y,N,n,YES,yes,NO,no" ;; esac done } |
if getyn 呼叫函式 以函式作為if條件,必須用if command法 then 注意0為真 echo " your answer is yes" else echo "your anser is no" fi |
if, case,匹配字串最常見,但如何匹配一段很長的輸出,一堆文字?最好方法,用“*”,如:*"command not found"*
[[email protected] ~]$ vi test.sh var=$(ls -l $1) $()取命令輸出,$1是命令列引數 echo "output is $var" case $var in "-rw-rw-r--"*) echo "this is not a execute file";; "-rwxrwxr-x"*) echo "this is a execute file"; 注意*在雙引號外邊 esac |
[[email protected] ~]$ sh test.sh 22.txt output is -rw-rw-r-- 1 macg macg 15 Jun 9 19:00 22.txt this is not a execute file [[email protected] ~]$ chmod +x 22.txt [[email protected] ~]$ sh test.sh 22.txt output is -rwxrwxr-x 1 macg macg 15 Jun 9 19:00 22.txt this is a execute file |
例2.匹配file命令輸出的一堆文字,以獲知檔案型別
用’ ’ 取輸出,然後用CASE+*對輸出做修飾處理.
[[email protected] ~]$ vi test.sh var=`file $1` ` `和$( )作用相同,是取命令輸出 echo "output is $var" case $var in "$1: ASCII text"*) echo "this is a text file";; "$1: directory"*) echo "this is a directory";; 注意*在雙引號外邊 esac |
[[email protected] ~]$ sh test.sh 22.txt output is 22.txt: ASCII text this is a text file [[email protected] ~]$ sh test.sh test-dir output is test-dir: directory this is a directory |
最典型的shell case命令匹配命令列,用於sys v啟動指令碼的start|stop|restart|status處理
case "[email protected]" in
([email protected] 字串陣列:以"引數1" "引數2" ... 的字串陣列形式儲存所有引數
對於單個引數的情況,[email protected]就是一個字串)
start)
echo -n "Starting firewall..."
。。。
echo "OK!"
exit 0
;;
stop)
echo -n "Stopping firewall..."
。。。
exit 0
;;
restart)
$0 stop $0即執行原始程式
$0 start
;;
status)
clear
echo ">------------------------------------------"
iptables -L
echo ">------------------------------------------"
iptables -t nat -L POSTROUTING
exit 0
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
相關推薦
shell程式設計——case語句
case語句格式 # vi test.sh:echo "input : "read numecho "the input data is $num"case $num in1) echo "January";; 雙分號結束2) echo "Feburary";;5)
shell程式設計-迴圈語句
一、for語句 for迴圈語句有兩種格式,分別如下: (一)for in語句 for var in list do commands done list代表要迴圈的值,在每次迴圈的時候,會把當前的值賦值給var(變數名而已,隨意定), 這樣在迴圈體中就可以直接通過$var獲
shell程式設計——if語句 if -z -n -f -eq -ne -lt
shell程式設計中條件表示式的使用 if 條件 then Command else Commandfi 別忘了這個結尾 If語句忘了結尾fi test.sh: line 14: syntax erro
Shell Scripts - 條件語句,case語句,function功能
有變 段落 hello 一個 包括 body idt keyword track 改動之前的代碼 1.推斷 $1 是否為 hello,假設是的話。就顯示 "Hello, how are you ?";
shell腳本中的邏輯判斷,文件目錄屬性判斷,if特殊用法,case語句
shell腳本中的邏輯判斷 文件目錄屬性判斷 if特殊用法 case判斷 筆記內容:20.5 shell腳本中的邏輯判斷20.6 文件目錄屬性判斷20.7 if特殊用法20.8/20.9 case判斷筆記日期:2017-11-2220.5 shell腳本中的邏輯判斷在所有的編程語言中都會有if
Shell 腳本應用(for、while、case語句應用)
passwd bre 更改 -- ... 分隔 空格 條件 重復 1、for :讀取不同的變量值,逐個執行同一組命令,直到取值完畢退出,變量值以空格分隔語法: for 變量值in 取值列表do命令done2、while :重復測試某個條件,成立則執行,進入下一個循環,直
shell腳本應用(三)for、while、case語句
姓名 std proc pgrep 符號 prefix dfa 先生 let 前言:當面對各種列表重復任務時,使用if語句已經難以滿足要求,而順序編寫全部代碼更是顯得異常繁瑣,困難重重。使用循環、分支等其他程序控制結構,從而能夠輕松完成更加復雜、強大的功能。1、使用for循
shell腳本編程學習筆記-case語句
linux shell 1.case結構條件語句語法 case語句實際上就是規範的多分支if語句 case “字符串變量”in 值1)指令1… ;; 值2)指令2… ;; *)指令3… esac 中文編程語法: case “找女朋友條件”in 有房)嫁給你… ;; 你爸是李剛)嫁給你… ;; 努力吃
03 shell編程之case語句與函數
使用 函數名 AC key body 語句 wid 編寫 util 本文所有內容均來自當年博主當年學習筆記,若有不足歡迎指正 Shell編程之case語句與函數 學習目標: 掌握case語句編程 掌握shell函數的使用 目錄結構: Case語句 Case語句的
shell流程控制語句 case
不常用 多個 流程 shell流程控制 ase 讀取 ext ffffff 提示符 linux的shell前前後後學了好幾遍了奈何記性不好,總是忘了,追主要的原因可能是不常用的原因吧!case開頭 esac結尾下面是結果輸入法不對 輸入的符號就不對,剛開始總錯,後來切換了
Shell語法—— case 條件語句
UNC functions restart 條件語句 lse init str ase shell語法 case 條件語句語法 case 條件語句語法格式為: case " 變量 " in 值 1)
《Shell 程式設計》08_case 條件語句
《Shell 程式設計》08_case 條件語句 標籤(空格分隔): Shell 文章目錄 《Shell 程式設計》08_case 條件語句 8.1 case 條件語句的語法 8.2 case 條件語句實踐
《Shell 程式設計》06_if 條件語句
《Shell 程式設計》06_if 條件語句 標籤(空格分隔): Shell 文章目錄 《Shell 程式設計》06_if 條件語句 6.1 if 條件語句的語法 6.1.1. 單分支結構 6.1.2. 雙
Shell程式設計-08-Shell中的迴圈語句
迴圈語句常用於重複執行一條命令或一組命令等,直到達到結束條件後,則終止執行。在Shell中常見的迴圈命令有while、until、for和select等。 while語句 基礎語法 while <條件表示式> do 語句 done while迴圈讀取檔案 1、使用exe
bash程式設計之case語句,函式
bash指令碼程式設計:之case語句 條件測試: 0: 成功 1-255: 失敗 命令: [ expression ] [[ expression ]] test expression
shell程式設計中select語句的使用
利用select語句可以非常方便的實現選單迴圈結構,其語法如下 select variable in list #將列表中的每一個選單項之前新增從1開始遞增的序號 #顯示環境變數PS3的值(存放的是引導使用者輸入的提示資訊) #使用者選擇的選單序號存在變數RE
shell程式設計之功能語句
1.以#開頭的語句是註釋。 最常見的是**#!/bin/sh**-------用於告訴os用哪種型別的shell來解釋執行該程式 2.read從標準輸入讀入一行,並賦值給後面的變數,其語法: (希望echo不換行 1.用echo -n 《內容》2.用#!/bin/sh echo “t
shell程式設計學習4改變語句執行的邏輯輸入輸出等
例項 使用分號; 依次執行,沒有邏輯關係 mkdir /newdir ; cd /newdir //新建並進入newdir 使用&& 與邏輯,一旦出現失敗後面命令不執行 make && make install //保證編譯完成後安裝
shell筆記之case語句
一般用於固定傳參指令碼 語法格式 case 變數 in 1) do ;; 2) do ;; *) exit esac 使用case列印選單 [[email prote
Shell程式設計-06-Shell中的if語句
在任何一門語言中,判斷語句總是少不了,今天來學習一下Shell中的if語句。 基本語法 單分支情況 第一種語法 if <條件表示式> then 語句 fi 第二種語法 if <條件表示式>;then 語句 fi 其中條件表示式部分可以是tes