7. shell的字符串和數組


一、shell的字符串

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

單引號

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"!

雙引號的優點:

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

拼接字符串

your_name="runoob" # 使用雙引號拼接 greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1 # 使用單引號拼接 greeting_2='hello, '$your_name' !' greeting_3='hello, ${your_name} !' echo $greeting_2 $greeting_3

輸出結果為:

hello, runoob ! hello, runoob ! hello, runoob ! hello, ${your_name} !

獲取字符串長度

string="abcd" echo ${#string} #輸出 4

提取子字符串

以下實例從字符串第 2 個字符開始截取 4 個字符:

string="runoob is a great site" echo ${string:1:4} # 輸出 unoo

注意:第一個字符的索引值為 0

查找子字符串

查找字符 i 或 o 的位置(哪個字母先出現就計算哪個):

string="runoob is a great site"

echo `expr index "$string" io` # 輸出 4

 

二、Shell的數組

定義數組

數組中可以存放多個值。Bash Shell 只支持一維數組(不支持多維數組),初始化時不需要定義數組大小(與 PHP 類似)。

與大部分編程語言類似,數組元素的下標由 0 開始。

Shell 數組用括號來表示,元素用"空格"符號分割開,語法格式如下:

array_name=(value1 value2 ... valuen)

我們也可以使用下標來定義數組:

array_name[0]=value0 array_name[1]=value1 array_name[2]=value2
 

讀取數組

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

${array_name[index]}

舉例:array_demo.sh
#!/bin/bash
  
MY_ARRAY=('zhangsan' 18 'China')
echo ${MY_ARRAY}
echo "name:  ${MY_ARRAY[0]}, age: ${MY_ARRAY[1]}, contry: ${MY_ARRAY[2]}"

運行:sh array_demo.sh 

 

 

對數組進行賦值:

#!/bin/bash
  
MY_ARRAY=('zhangsan' 18 'China')
echo ${MY_ARRAY}
echo "name:  ${MY_ARRAY[0]}, age: ${MY_ARRAY[1]}, contry: 
${MY_ARRAY[2]}"

# 對數組進行賦值
MY_ARRAY[3]=180
MY_ARRAY[4]=75

echo "height: ${MY_ARRAY[3]}cm, weight: ${MY_ARRAY[4]}kg"

運行:

MBC02FV3MZMD6P:J_shell j$ sh array_demo.sh 

zhangsan

name:  zhangsan, age: 18, contry: China

height: 180cm, weight: 75kg

 

 

查看數組

1)查看系統聲明過的數組

 

declare -a 

 

2) 訪問自定義數組的元素

 

 遍歷數組

1)可以通過索引,依次獲取數組中的元素

2)for循環遍歷

【note】關聯數組的遍歷是通過索引值進行遍歷

 

關聯數組

1)什么是關聯數組---可以允許用戶自定義數組的索引,方便使用和高效

2)關聯數組一定要聲明,不聲明就是基本數組

聲明關聯數組:

 declare -A ASS_ARRAY

舉例:關聯元祖有2種定義方式:

  • 一次性賦一個值
  • 一次性賦多個值

 

#!/bin/bash
  
#聲明一個關聯數組
declare -a ass_array1

#自定義關聯數組的索引值
ass_array1[name]='zhangsan'
ass_array1[age]=18

#一次性賦多個值 ass_array1
=([contry]='China' [height]=180 [weight]=75) echo ${ass_array1} echo "name: ${ass_array1[0], age: ${ass_array1[1]}, weight: ${ass_array1[4]}"

 

 

【NOTE】基本數組的索引是從0,1,2.。。開始的,而關聯數組允許自定義索引,但是必須要先聲明為關聯數組

 

 


免責聲明!

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



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