1. 程式人生 > >shell 指令碼 輸入引數 學習

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” 的形式輸出所有引數。

但是當它們被雙引號(” “)包含時,$*” 會將所有的引數作為一個整體,以”$$2 … $n”的形式輸出所有引數;”$@” 會將各個引數分開,以”$1” “$2” … “$n” 的形式輸出所有引數。

看到上面這句話可能還不太好理解$

*和$@的區別,下面通過一個例子就比較清楚的可以看出這兩者的區別

1、新建一個檔案diff.sh,並輸入如下內容:

2、執行diff.sh。

./diff.sh AAA BBB CCC結果如下:

看到上面的執行結果,再理解下下面這句話:

$* 和 $@ 都表示傳遞給函式或指令碼的所有引數

1、當$*和$@不被雙引號(” “)包含時,都以”$1” “$2” … “$n” 的形式輸出所有引數。

2、但是當它們被雙引號(” “)包含時,$*” 會將所有的引數作為一個整體,以”$$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系統的使用。

參考資料