shell 指令碼 輸入引數 學習
特殊變數
一般變數比較簡單哈,與Java、C/C++不一樣的地方在於不需要定義,直接使用即可。
例如:
#!/bin/bash
var= "wojiushimogui"
echo ${var}
需要注意的兩點:
1、變數和等號之間不能有空格。
2、使用變數的時候我們只需要在變數前面加上一個美元符號$即可。好的程式設計風格為:將變數用大括號括起來。例如:${var}相比$var 在風格上就更好。
這篇博文主要介紹下特殊變數。感覺比較有意思。
我們先來看一個例子。
1、新建一個名為exVar.sh檔案,並輸入如下的內容
#!/bin/bash
echo $0
echo $1
echo $2
echo $*
echo [email protected]
echo $#
2、執行此檔案:./exVar.sh AAAA BBBB CCCC.
結果如下:
$*和$@的區別
這裡有必要介紹下∗和@的區別。
$* 和 $@ 都表示傳遞給函式或指令碼的所有引數,當$*和$@不被雙引號(” “)包含時,都以”$1” “$2” … “$n” 的形式輸出所有引數。
但是當它們被雙引號(” “)包含時,“$*” 會將所有的引數作為一個整體,以”$1 $2 … $n”的形式輸出所有引數;”$@” 會將各個引數分開,以”$1” “$2” … “$n” 的形式輸出所有引數。
看到上面這句話可能還不太好理解$
1、新建一個檔案diff.sh,並輸入如下內容:
2、執行diff.sh。
./diff.sh AAA BBB CCC結果如下:
看到上面的執行結果,再理解下下面這句話:
$* 和 $@ 都表示傳遞給函式或指令碼的所有引數
1、當$*和$@不被雙引號(” “)包含時,都以”$1” “$2” … “$n” 的形式輸出所有引數。
2、但是當它們被雙引號(” “)包含時,“$*” 會將所有的引數作為一個整體,以”$1 $2 … $n”的形式輸出所有引數;”$@” 會將各個引數分開,以”$1” “$2” … “$n” 的形式輸出所有引數。
1、命令替換
命令替換是指Shell可以先執行命令,將輸出結果暫時儲存,在適當的地方輸出。
例如:date是linux是一個日期命令。我們在Shell程式設計中進行命令替換。
看一個例子:
1、新建一個testDate.sh,並輸入如下內容
#!/bin/bash
DATE= `date`
echo "DATE is ${DATE}"
2、執行:./testDate.sh。
結果如下:
從結果中可以看到,確實進行了命令的替換。即Shell先執行命令date,將輸出結果儲存到了DATE變數中。
2、變數替換
變數可以替換的形式有如下幾種:
下面我們來寫一個小Demo
程式碼如下:
執行結果如下:
在執行結果中,上半部分是程式有點錯誤,第一個錯誤為:
var= "wojiushimogui"
這行程式碼的等號右邊有一個空格。這也就告訴我們變數賦值的“=”兩邊都不能有空格。否則都會報錯。
小結
這些內容都比較簡單,比較容易理解,寫這些小Demo有如下兩個目的:
1、加深自己對這些知識點的理解
2、更重要的是訓練自己熟悉linux系統的使用。