[work] shell中陣列下標訪問
shell中陣列的下標預設是從0開始的
1。將字串放在陣列中,獲取其長度
#!/bin/bash str="a b --n d" array=($str) length=${#array[@]} echo $length
for ((i=0; i<$length; i++)) do echo ${array[$i]} done
執行結果:
[[email protected] array]$ sh length.sh 4 a b --n d
列印字串:
#!/bin/bash str="a b c" for i in $str do echo $i done
或者:
#!/bin/bash str="a b c" array=($str) for ((i=0;i<${#array[@]};i++)) do echo ${array[$i]} done
執行結果:
a b c
2。字串用其他字元分割時
#!/bin/bash
str2="a#b#c" a=($(echo $str2 | tr '#' ' ' | tr -s ' ')) length=${#a[@]}
for ((i=0; i<$length; i++)) do echo ${a[$i]} done #echo ${a[2]}
執行結果:
a b c
3。陣列的其他操作
#!/bin/bash str="a b --n dd" array=($str) length=${#array[@]}
#ouput the first array element直接輸出的是陣列的第一個元素 echo $array
#Use subscript way access array用下標的方式訪問陣列元素 echo ${array[1]}
#Output the array輸出這個陣列 echo ${array[@]}
#Output in the array subscript for 3 the length of the element輸出陣列中下標為3的元素的長度 echo ${#array[3]}
#Output in the array subscript 1 to 3 element輸出陣列中下標為1到3的元素 echo ${array[@]:1:3}
#Output in the array subscript greater than 2 elements輸出陣列中下標大於2的元素 echo ${array[@]:2}
#Output in the array subscript less than 2 elements輸出陣列中下標小於2的元素 echo ${array[@]::2}
執行結果:
a b a b --n dd 2 b --n dd --n dd a b
4。遍歷訪問一個字串(預設是以空格分開的,當字串是以其他分隔符分開時可以參考2)
#!/bin/bash str="a --m" for i in $str do echo $i done
執行結果:
a --m
5。如何使用echo輸出一個字串str="-n". 由於-n是echo的一個引數,所以一般的方法echo "$str"是無法輸出的. 解決方法可以有:
echo x$str | sed 's/^x//' echo -ne "$str\n" echo -e "$str\n\c" printf "%s\n" $str(這樣也可以)
注意:echo的引數及其具體含義:
\c suppress trailing newline抑制尾隨換行符
\n new line換行
\r carriage return回車
\t horizontal tab水平標籤
\v vertical tab垂直標籤
-n do not output the trailing newline不輸出換行符後面的
-e enable interpretation of backslash escapes能夠使用逃逸字元
6.如何打印出一個數組的所有內容
array=`echo app-mds-console.war |sed -e 's/[-_]/ /g'|awk -F. '{print $1}'`
echo $array
輸出結果:app mds console
for name in $array
do
echo $name
done
執行結果:
app mds console --------------------- 作者:紫穎 來源:CSDN 原文:https://blog.csdn.net/zhuying_linux/article/details/6778877 版權宣告:本文為博主原創文章,轉載請附上博文連結!