Linuxshell腳本的變量


---恢復內容開始---

注意,變量名和等號之間不能有空格,同時,變量名的命名須遵循如下規則:

  • 命名只能使用英文字母,數字和下划線,首個字符不能以數字開頭。
  • 中間不能有空格,可以使用下划線(_)。
  • 不能使用標點符號。
  • 不能使用bash里的關鍵字(可用help命令查看保留關鍵字)。

只讀變量

使用 readonly 命令可以將變量定義為只讀變量,只讀變量的值不能被改變。

#!/bin/bash myUrl="http://www.google.com" readonly myUrl myUrl="http://www.runoob.com"

運行腳本,結果如下:

/bin/sh: NAME: This variable is read only.

刪除變量

使用 unset 命令可以刪除變量。語法:

unset variable_name

變量被刪除后不能再次使用。unset 命令不能刪除只讀變量。

實例

#!/bin/sh myUrl="http://www.runoob.com" unset myUrl echo $myUrl

變量類型

運行shell時,會同時存在三種變量:

  • 1) 局部變量 局部變量在腳本或命令中定義,僅在當前shell實例中有效,其他shell啟動的程序不能訪問局部變量。#在當前shell有效
  • 2) 環境變量 所有的程序,包括shell啟動的程序,都能訪問環境變量,有些程序需要環境變量來保證其正常運行。必要的時候shell腳本也可以定義環境變量。export back_dir2=/home/backup 方法二 export back_dir1 將自定義變量轉換成環境變量,在當前shell和子shell中都有效
  • 3) shell變量 shell變量是由shell程序設置的特殊變量。shell變量中有一部分是環境變量,有一部分是局部變量,這些變量保證了shell的正常運行

Shell 字符串

字符串是shell編程中最常用最有用的數據類型(除了數字和字符串,也沒啥其它類型好用了),字符串可以用單引號,也可以用雙引號,也可以不用引號。單雙引號的區別跟PHP類似。

單引號

str='this is a string'

單引號字符串的限制:

  • 單引號里的任何字符都會原樣輸出,單引號字符串中的變量是無效的;
  • 單引號字串中不能出現單獨一個的單引號(對單引號使用轉義符后也不行),但可成對出現,作為字符串拼接使用。

雙引號

your_name='runoob' str="Hello, I know you are \"$your_name\"! \n" echo -e $str

輸出結果為:

Hello, I know you are "runoob"!

雙引號的優點:

  • 雙引號里可以有變量
  • 雙引號里可以出現轉義字符

反引號

  `在Linux中起着命令替換的作用。命令替換是指shell能夠將一個命令的標准輸出插在一個命令行中任何位置

read 命令用於獲取鍵盤輸入信息

它的語法形式一般是:
read [-options] [variable...]

以下實例讀取鍵盤輸入的內容並將其賦值給shell變量,為:-p 參數由於設置提示信息:

read -p "input a val:" a #獲取鍵盤輸入的 a 變量數字 read -p "input b val:" b #獲取鍵盤輸入的 b 變量數字 r=$[a+b] #計算a+b的結果 賦值給r 不能有空格 echo "result = ${r}" #輸出顯示結果 r

測試結果:

input a val:1 input b val:2 result = 3
#!/bin/bash
read -p "please input your name: " name
read -p "please input your age: ,sex: " age sex #read可以定義多個變量,以空格的形式截取

 

 

Shell 數組

bash支持一維數組(不支持多維數組),並且沒有限定數組的大小。

類似於 C 語言,數組元素的下標由 0 開始編號。獲取數組中的元素要利用下標,下標可以是整數或算術表達式,其值應大於或等於 0。

定義數組

在 Shell 中,用括號來表示數組,數組元素用"空格"符號分割開。定義數組的一般形式為:

數組名=(值1 2 ... n)

可以不使用連續的下標,而且下標的范圍沒有限制。

讀取數組

讀取數組元素值的一般格式是:

${數組名[下標]}

例如:

valuen=${array_name[n]}

使用 @ 符號可以獲取數組中的所有元素,例如:

echo ${array_name[@]}

獲取數組的長度

獲取數組長度的方法與獲取字符串長度的方法相同,例如:

# 取得數組元素的個數 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得數組單個元素的長度 lengthn=${#array_name[n]}

Shell 注釋

以 # 開頭的行就是注釋,會被解釋器忽略。

通過每一行加一個 # 號設置多行注釋,像這樣:

 

 

Linux 的字符串截取很有用。有八種方法。

假設有變量 var=http://www.aaa.com/123.htm

1. # 號截取,刪除左邊字符,保留右邊字符。

echo ${var#*//}

其中 var 是變量名,# 號是運算符,*// 表示從左邊開始刪除第一個 // 號及左邊的所有字符

即刪除 http://

結果是 :www.aaa.com/123.htm

2. ## 號截取,刪除左邊字符,保留右邊字符。

echo ${var##*/}

##*/ 表示從左邊開始刪除最后(最右邊)一個 / 號及左邊的所有字符

即刪除 http://www.aaa.com/

結果是 123.htm

3. %號截取,刪除右邊字符,保留左邊字符

echo ${var%/*}

%/* 表示從右邊開始,刪除第一個 / 號及右邊的字符

結果是:http://www.aaa.com

4. %% 號截取,刪除右邊字符,保留左邊字符

echo ${var%%/*}

%%/* 表示從右邊開始,刪除最后(最左邊)一個 / 號及右邊的字符

結果是:http:

5. 從左邊第幾個字符開始,及字符的個數

echo ${var:0:5}

其中的 0 表示左邊第一個字符開始,5 表示字符的總個數。

結果是:http:

6. 從左邊第幾個字符開始,一直到結束。

echo ${var:7}

其中的 7 表示左邊第8個字符開始,一直到結束。

結果是 :www.aaa.com/123.htm

7. 從右邊第幾個字符開始,及字符的個數

echo ${var:0-7:3}

其中的 0-7 表示右邊算起第七個字符開始,3 表示字符的個數。

結果是:123

8. 從右邊第幾個字符開始,一直到結束。

echo ${var:0-7}

表示從右邊第七個字符開始,一直到結束。

結果是:123.htm

注:(左邊的第一個字符是用 0 表示,右邊的第一個字符用 0-1 表示)

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM