Shell入門:Shell變數,入門shell變數

來源:互聯網
上載者:User

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--#注釋

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.