shell 之解譯器、變數、字串、數組

來源:互聯網
上載者:User

標籤:報錯   linu   mod   lin   定義變數   array   roo   拼接字串   java   

1.Shell簡介

Shell 是一個用 C 語言編寫的程式,它是使用者使用 Linux 的橋樑。Shell 既是一種命令語言,又是一種程式設計語言。Shell 是指一種應用程式,這個應用程式提供了一個介面,使用者通過這個介面訪問作業系統核心的服務。Shell 編程跟 java、php 編程一樣,只要有一個能編寫代碼的文字編輯器和一個能解釋執行的指令碼解譯器就可以了常見的有:

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)

執行shell指令碼兩種方法,一種是作為可執行程式執行,先要賦予執行許可權;另外一種是作為解譯器的參數執行;

chmod +x ./test.sh

./test.sh

/bin/sh test.sh

/bin/php test.php

2.shell的變數

定義變數

定義變數時直接給出,使用變數時用符號$;花括弧協助解譯器識別變數名稱的邊界;

your_name="runoob.com"

echo $your_name或者echo ${your_name}

唯讀變數

myUrl="http://www.w3cschool.cc"

readonly myUrl

myUrl="http://www.runoob.com" 更改變數會報錯

刪除變數

使用 unset 命令可以刪除變數。文法:

 unset variable_name

3.shell字串

定義字串

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

your_name=‘qinjx‘

str="Hello, I know your are \"$your_name\"! \n"

單引號裡的任何字元都會原樣輸出,單引號字串中的變數是無效的;單引號字串中不能出現單引號(對單引號使用轉義符後也不行)。雙引號裡可以有變數

雙引號裡可以出現逸出字元

拼接字串

your_name="qinjx"

greeting="hello, "$your_name" !"

greeting_1="hello, ${your_name} !"

echo $greeting $greeting_1

擷取字串長度

string="abcd"

echo ${#string} #輸出 4

提取子字串

 

以下執行個體從字串第 2 個字元開始截取 4 個字元:

 string="runoob is a great site"

echo ${string:1:4} # 輸出 unoo

尋找子字串

尋找字元 "i 或 s" 的位置:

string="runoob is a great company"

echo `expr index "$string" is`  # 輸出 8

以上指令碼中 "`" 是反引號,而不是單引號 "‘",不要看錯了哦。

4.Shell 數組

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

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

定義數組

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

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

例如:

array_name=(value0 value1 value2 value3)

或者

array_name=(

value0

value1

value2

value3

)

還可以單獨定義數組的各個分量:

array_name[0]=value0

array_name[1]=value1

array_name[n]=valuen

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

讀取數組

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

${數組名[下標]}

例如:

valuen=${array_name[n]}

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

echo ${array_name[@]}

擷取數組的長度

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

# 取得數組元素的個數

length=${#array_name[@]}

# 或者

length=${#array_name[*]}

# 取得數組單個元素的長度

lengthn=${#array_name[n]}

 

shell 之解譯器、變數、字串、數組

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.