Linux 伺服器系統管理第十三章 Shell Script 程式設計  上一頁    下一頁

13-2 基本敘述句

內容:

基本上,所有 Shell 命令都是 Shell script 的敘述句,譬如 lscpcatdate 等等,或是由 Shell script 所新建立的命令皆是。為了提高 Shell script 程式的變化性,除了 Shell 命令外,其他都必須增加一些基本敘述句來輔助,以下介紹一些較常用的敘述句。

13-2-1 輸出敘述 – echo

echo 敘述是將資料輸出到終端機上,其資料可以是變數內容或文字訊息,範例如下$vi ex7_4

#! /bin/bash

# file_name:ex7_4

echo $USER

echo "Good luck to you"

echo Good luck to you

echo "Date: `date`"

上述範例中,第一個敘述是將變數($USER)內容輸出;第二與第三個敘述是直接將訊息輸出,其中雙引號可有可無;第四個敘述是將命令(date)的結果一併輸出,注意必須使用反向單引號(`)。執行該命令稿之後的結果如下:

$ ex7_4                             【執行 ex7_4 程式】

tsnien

Good luck to you

Good luck to you

Date: Thu Jul 21 14:10:25 CST 2005

13-2-2 輸入敘述 - Read

Read 敘述是由鍵盤讀入資料,並存入變數內,範例如下:$vi ex7_5

#! /bin/bash

# file_name: ex7_5

echo –n “What is your name =>”

read name

echo “Welcome, $name”

其中 echo –n 表示沒有換行(Enter 輸入)的功能,當系統執行到 read name 時,會暫停並等待輸入,直到有 Enter 輸入,再將鍵盤輸入文字放入 name 變數內。另外,變數並不需要事先宣告,使用時就直接採用已包含宣告的功能。執行結果如下:

$ ex7_5                            【執行 ex7_5 程式】

What is your name =>Tien-shou

Welcome, Tien-shou

利用 read –p 語法,也可以達到相同結果,如下$vi ex7_5_1

#! /bin/bash

# file name: ex7_5-1

read -p "What is your name =>" name

echo "Welcome, $name"

13-2-3 設定位置變數 – Set

執行某些命令會出現類似欄位格式的多筆資訊,可利用 set 命令將訊息指定到位置變數內。以執行 date 命令為例,它會出現星期、月、日、時間等訊息,如利用 set 命令指定位置變數,其關係如圖 13-1 所示,程式範例如下($vi ex7_6

13-1 設定位置變數範例

#! /bin/bash

# file_name: ex7_6

set `date`                    【注意必須使用反向單引號】

echo "Time: $4 $5"

echo "Day: $1"

echo "Date: $3 $2 $6"

執行結果如下:

執行結果如下:

$ chmod u+x ex7_6             【設定成可執行檔】

$ ex7_6                      【執行 set_scr 程式】

Time: 15:07:17 CST

Day: Thu

Date: 21 Jul 2005

13-2-4 數學運算 – expr

Shell script 同樣具有加(+)、減(-)、乘(*)、除(/)與求餘數(%)的運算功能,但執行這些運算時,都必須利用 expr 敘述句來完成(大部分的 Script 皆是如此),可先在提示符號($)底下測試運算功能,如下:

$ 3 + 4                          【系統判斷 3 是輸入命令】

-bash: 3: command not found

$ echo 3 + 4                       【輸出 3 + 4 訊息】

3 + 4

$ echo expr 3 + 4

expr 3 + 4

$ echo `expr 3 + 4 `            expr 執行運算功能,反向單引號】

7

第一個命令系統判斷 3 為輸入命令;第二與第三個命令僅輸出訊息(3 + 4 expr 3 + 4);第四個命令才是真正執行運算功能,其中 expr 運算敘述必須利用反向單引號(`)包括起來。以下用一個較複雜的範例,來實作各種運算子,範例如下:$vi ex7_7

#! /bin/bash

# file_name: ex7_7

echo "Test operator"

echo -n "Please enter first number =>"

read number1

echo -n "Please enter second number =>"

read number2

echo "Calculated results:"

sum=`expr $number1 + $number2`          【等號前後不可以有空格】

echo "   Sum = $sum"

dele=`expr $number1 - $number2`

echo "   Dele = $dele"

echo "   Mult = `expr $number1 \* $number2`"   \ 抑制 * 特殊功能】

echo "   Div = `expr $number1 / $number2`"

echo "   Rem = `expr $number1 % $number2`"

上述範例比較特殊的地方,星號(*)在 Shell 環境裡是代表 0 個或多個任何字元(請參考 4-6-2 節說明)的意思,因此必須在它的前面加上反斜線(\),表示抑制其特殊功能,並恢復原來字元的表示法(* 代表乘法)。上述範例執行結果如下:

[tsnien@localhost shell]$ ex7_7

Test operator

Please enter first number =>320

Please enter second number =>200

Calculated results:

  Sum = 520

  Dele = 120

  Mult = 64000

  Div = 1

  Rem = 120

 

翻轉工作室:粘添壽

 

Linux 伺服器系統管理 - CentOS:

 

 

 

翻轉電子書系列: