Shell入門:Shell變數,入門shell變數
Shell入門(一)之Shell變數Shell指令碼的第一個程式
我們使用Linux使用者名稱登入,開啟控制台,輸入ls命令:
在當前檔案目錄中建立一個test目錄,在test目錄下建立一個hello.sh檔案。
建立test目錄
mkdir test
進入test目錄,建立hello.sh檔案
cd testtouch hello.sh或者直接使用vimvim hello.sh # 會直接建立hello.sh檔案,並開啟
使用vim開啟hello.sh,編寫shell命令
#!/bin/bashecho "Hello World!"
執行shell命令
在執行時,會遇到檔案沒有許可權的問題。所以在執行前查看下檔案許可權。
ls -l
沒有許可權,修改許可權
chmod 700 hello.sh
執行檔案hello.sh
./hello.sh
Shell變數
Shell變數命名規則:
命名只能使用英文字母,數字,底線。首字母不能是數字。 不能使用bash中的關鍵字命名。
在定義變數時,變數名和等號不能有空格。
Shell變數的使用
使用一個變數,只要在變數名前加貨幣符號$即可。如:
your_name='tom'echo $your_name
輸出:tom
或者使用${var}的形式,如:
echo ${your_name}
輸出:tom
唯讀變數
使用readonly命令可以將變數定義為唯讀變數。唯讀變數的值不能被修改。
id='007'readonly idid='008'
輸出結果:bash: id: readonly variable
刪除變數
使用unset命令可以刪除變數。
unset varibale_name
變數被刪除後不能再次使用,unset命令不能刪除唯讀變數。
變數類型
局部變數:在指令碼或命令中定義,僅在當前shell樣本中有效,其他shell啟動的程式不能訪問局部變數。
環境變數:所有程式,包括shell啟動程式,都能訪問環境變數,有些程式需要環境變數來保證其正常運行。
shell變數:shell變數是由shell程式設定的特殊變數。shell變數中有一部分是環境變數,一部分是局部變數,這些變數保證了shell的正常運行。
Shell字串
字串是shell中最常用的資料類型,字串可以用單引號,雙引號,也可以不用引號。
單引號
str='hello'
單引號裡面的任何字元都會原樣輸出,單引號字串中的變數是無效的。
單引號字串不能出現單引號(轉義後也不行)
雙引號
雙引號的優點:
雙引號裡可以有變數
雙引號裡面可以出現逸出字元
拼接字串
[zhang@localhost ~]$ date='today is 2018-01-16'[zhang@localhost ~]$ name='tom'[zhang@localhost ~]$ str="hello,$name "[zhang@localhost ~]$ echo $str$datehello,tom today is 2018-01-16
擷取字串長度
zhang@localhost ~]$ string='abcd'[zhang@localhost ~]$ echo ${#string}4
提取子字串
[zhang@localhost ~]$ string='hello world'[zhang@localhost ~]$ echo ${string:1:4}ello
尋找子字串
[zhang@localhost ~]$ string='hello world'[zhang@localhost ~]$ echo `expr index "$string" o`5[zhang@localhost ~]$ echo `expr index "$string" w`7
Shell數組
bash支援一維數組(不支援多維陣列),並且沒有限定數組的大小。
定義數組
在Shell中,用括弧來表示數組,數組元素用空格符號分割。定義數組的一般形式為:
數組名=(value1 value2 value3 ... valuen)
例如:
arr=(value0 value1 value2 value3)
或者
arr=(value0value1value2value3)
還可以單獨定義數組的各個分量
arr[0]=value0arr[1]=value1arr[2]=value2arr[3]=value3
讀取數組
讀取數組元素值的一般格式:
$數組名[下標]
如:
value0=${arr[0]}
使用@符號擷取數組中的所有元素,例如:
echo ${arr[@]}
擷取數組的長度
length=${#arr[@]}或者length=${#arr[*]}
擷取數組單個元素的長度
length0=${#arr[0]}
Shell注釋
以”#”開頭的行就是注釋,會被解譯器忽略。
sh裡面沒有多餘的行,只能每一行加一個”#”號,如:
#!/bin/bash#--encoding utf-8--#注釋