next up previous contents
Next: 善用判斷式 Up: Shell Scripts - 簡介與 Previous: 視 Shell 為一種程式語言   Contents

shell script 練習

  • 變數內容由使用者決定:請以 read 指令,撰寫一個 script 讓使用者輸入:1. first name 與 2. last name, 最後在螢幕上顯示:『Your full name is: 』的內容:
    [root@linux scripts]# vi sh03.sh
    #!/bin/bash
    # Program:
    #       Let user keyin their first and last name, and show their full name.
    # History:
    # 2005/08/23    csie   First release
    
    read -p "Please input your first name: " firstname
    read -p "Please input your last name:  " lastname
    # read -p 後面接提示字元
    echo -e "\nYour full name is: $firstname $lastname"
    # echo -e enable interpretation of backslash escapes(解釋 \n 為 new line)
    
  • 利用 date 進行檔案的建立:建立三個空的檔案,檔名最開頭由使用者輸入決定,後接前天、昨天、今天日期。例如:若使用者輸入 filename,今天日期是 2005/08/23,則建立的檔案為 filename20050821, filename20050822, filename20050823。
    [root@linux scripts]# vi sh04.sh
    #!/bin/bash
    # Program:
    #       User can keyin filename to touch 3 new files.
    # History:
    # 2005/08/23    csie   First release
    
    # 1. 讓使用者輸入檔案名稱,並取得 fileuser 這個變數;
    echo -e "I will use 'touch' command to create 3 files."
    read -p "Please input the filename what you want: " fileuser
    
    # 2. 為了避免使用者隨意按 Enter ,利用變數功能分析檔名是否有設定?
    filename=${fileuser:-"filename"}
    
    # 3. 開始利用 date 指令來取得所需要的檔名了;
    date1=`date --date='2 days ago' +%Y%m%d`
    date2=`date --date='1 days ago' +%Y%m%d`
    date3=`date +%Y%m%d`
    file1="$filename""$date1"
    file2="$filename""$date2"
    file3="$filename""$date3"
    
    # 4. 將檔名建立
    touch $file1
    touch $file2
    touch $file3
    
  • 數值運算的方法:使用者輸入兩個變數,將兩個變數的內容相乘,並輸出相乘的結果。
    [root@linux scripts]# vi sh05.sh
    #!/bin/bash
    # Program:
    #       User can input 2 integer to cross by!
    # History:
    # 2005/08/23    csie   First release
    
    echo -e "You SHOULD input 2 number, I will cross they! \n"
    read -p "first number:  " firstnu
    read -p "second number: " secnu
    total=$(($firstnu*$secnu))
    echo -e "\nThe number $firstnu x $secnu is ==> $total"
    
  • 數值運算有:+, -, *, /, % 等。其中 % 是取餘數 13 對 3 取餘數,例如:
    [root@linux scripts]# nu=$((13%3)); echo $nu
    1
    
練習題
  1. 撰寫 shell script,如何以 read 指令,讓使用者輸入變數 var 的內容,且提示 Please input var: ?
    Sol. read -p "Please input var: " var
  2. 撰寫 shell script,如何以 echo 指令,先換行後讓變數 var 的內容顯示在螢幕上,且提示 var= ?
    Sol. echo -e "\nvar= " var
  3. 撰寫 shell script,如何讓變數 date1 的內容為昨日,且格式為 yyyymmdd?
    Sol. date1=`date -date='1 days ago' +%Y%m%d`
  4. 撰寫 shell script,如何讓變數 nu 的內容為變數 nu1 與 nu2 相乘的結果?
    Sol. nu=$(($nu1*$nu2))
  5. 撰寫 shell script,如何讓變數 nu 的內容為變數 nu1 除以 nu2 的結果?
    Sol. nu=$(($nu1/$nu2))
  6. 撰寫 shell script,如何讓變數 nu 的內容為變數 nu1 除 nu2 取餘數的結果?
    Sol. nu=$(($nu1%$nu2))



2017-06-14