bash整理 - 数组

BASH只支持一维数组,但参数个数没有限制。

  1. 数组赋值:
# 1
array=(var1 var2 var3 ... varN)

# 2
array=([0]=var1 [1]=var2 [2]=var3 ... [n]=varN)

# 3
array[0]=var1
arrya[1]=var2
##...
array[n]=varN
  1. 计算数组元素个数:
${#array[@]}  或者  ${#array[*]}

BASH的特殊参数 @* 都表示“扩展位置参数,从1开始”,但形式稍有差异,但在数组里使用好像是可以通用的。

  1. 打印整个数组:
echo ${array[*]}  或者 echo ${array[@]}
  1. 打印某一数组元素:
echo ${array[3]}
  1. 清除指定的单个数组元素:
unset array[2]
  1. 清除整个数组:
unset array
  1. 引用数组:
echo ${array[n]}
  1. 遍历数组:
filename=(`ls`)
for var in ${filename[@]};do
    echo $var
done
  1. 数组实用示例:
# 1、从 标准输入 读入n次字符串,每次输入的字符串保存在数组array里

i=0
n=5
while [ "$i" -lt $n ] ; do
    echo "Please input strings ... `expr $i + 1`"
    read array[$i]
    b=${array[$i]}
    echo "$b"
    i=`expr $i + 1`
done
 
# 2、将字符串里的字母逐个放入数组,并输出到标准输出

chars='abcdefghijklmnopqrstuvwxyz'
for (( i=0; i<26; i++ )) ; do
    array[$i]=${chars:$i:1}
    echo ${array[$i]}
done
 
##  ${chars:$i:1},表示从chars字符串的 $i 位置开始,获取 1 个字符。如果将 1 改为 3 ,就获取 3 个字符

标签: none

评论已关闭