shell指令碼字串和陣列的使用操作方法

大雄45發表於2020-11-12
字串

可以使用單引號和雙引號定義字串變數但是單引號中不支援變數解析

#! /bin/bash
username="mayuan"
str_1="hello ${username}"
str_2='hello ${username}'
echo $str_1 # hello mayuan
echo $str_2 # hello ${username}
獲取字串的長度
#! /bin/bash
username="mayuan"
echo ${#username} # 6
擷取字串
#! /bin/bash
username="mayuan"
echo ${username:1:3} # 從第二個字元開始擷取3個字元輸出"ayu"
查詢指定字元
#! /bin/bash
username="mayuan"
echo $(expr index "${username}" y) #查詢y在指定字元的位置
陣列
#! /bin/bash
arr=(1 2 3 4 5)
echo ${arr[0]} #輸出1
echo ${arr[1]} #輸出2
獲取陣列長度
#! /bin/bash
arr=(1 2 3 4 5)
echo ${#arr[@]} #輸出5
echo ${#arr[*]}
將字串分隔成陣列
#!/bin/bash
a="hello,world,nice,to,meet,you"
#要將$a分割開,先儲存舊的分隔符
OLD_IFS="$IFS"
#設定分隔符
IFS=","
#如下會自動分隔
arr=($a)
#恢復原來的分隔符
IFS="$OLD_IFS"
#遍歷陣列
for s in ${arr[@]}
do
echo "$s"
done
#!/bin/bash
a="hello,world,nice,to,meet,you"
#要將$a分割開,先儲存舊的分隔符
OLD_IFS="$IFS"
#設定分隔符
IFS="," 
#如下會自動分隔
arr=($a)
#恢復原來的分隔符
IFS="$OLD_IFS"
#遍歷陣列
for s in ${arr[@]}
do
echo "$s"
done

變數$IFS儲存著分隔符,這裡我們將其設為逗號 "," OLD_IFS用於備份預設的分隔符,使用完後將之恢復預設。

  • arr=($a)用於將字串$a按IFS分隔符分割到陣列$arr
  • ${arr[0]} ${arr[1]} ... 分別儲存分割後的陣列第1 2 ... 項
  • ${arr[@]}儲存整個陣列。
  • ${!arr[@]}儲存整個索引值:1 2 3 4 ...
  • ${#arr[@]} 獲取陣列的長度。

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2733662/,如需轉載,請註明出處,否則將追究法律責任。

相關文章