2013-05-06 124 views
1

如何創建一個簡單的shell腳本,要求對來自用戶的簡單輸入,然後只運行與預定義的選擇相關的命令,例如交互的shell腳本

IF "ON" 
Backup Server 
ELSEIF "OFF" 
Delete Backups 
ELSEIF "GREY" 
Send Backups 
ENDIF 

回答

7

可以從接受輸入用戶通過read,你可以使用case ... esac塊做不同的事情。

閱讀作爲其參數,爲它會保存它的變量名的值

read foo 

會參加來自用戶的vaue並將其存儲在$foo

要提示用戶輸入,您需要使用echo。

echo "What is your favourite color?" 
read color 

最後,大多數shell腳本都支持case操作符。其採取的形式

case "value" in 
    "CHOICE) 
     # Do stuff 
     ;; 
esac 

全部放在一起:

echo "Which choice would you like? \c" 
read choice 

case "$choice" in 

    ON) 
     # Do Stuff 
     ;; 
    OFF) 
     # Do different stuff 
     ;; 
    *) 
     echo "$choice is not a valid choice" 
     ;; 
esac 
+0

我需要擁有\ c嗎?我是否需要在某處定義選擇? – 2013-05-06 00:51:54

+0

''\ c''是較老的語法,用於抑制回聲中的換行符,如果您的系統支持,則可以使用'-n'標誌。大小寫的選擇可以是文字,正則表達式或變量(可以插入)。 – zellio 2013-05-06 00:52:27

+0

有沒有一種方法可以顯示給用戶的選擇? – 2013-05-06 01:02:43

1
#!/bin/bash 

select choice in "ON" "OFF" "*"; do 
case "$choice" in 
    ON) echo "$choice"; # do something; 
    break;; 
    OFF) echo "$choice"; # do something; 
    break;; 
    *) echo "$choice other"; # do something; 
    break;; 
esac 
done 
0

您好是簡單的例子,如何做到這一點

while true; do 
    read -p 'do you want to continue "y" or "n": ' yn 

    case $yn in 

     [Yy]*) echo 'this program continue '; break;; 

     [Nn]*) exit;; 

     *) echo 'Please answer yes or no: ';; 

    esac 

done 

while true; do 
    read -p 'press "c" to quit this program: ' c 

    case $c in 

     [Cc]*) exit;; 

     *) echo 'for quit this program press "c": ' ;; 

    esac 

done 

源,請點擊這裏source