bash整理 - 数组
BASH只支持一维数组,但参数个数没有限制。
- 数组赋值:
# 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
- 计算数组元素个数:
${#array[@]} 或者 ${#array[*]}
BASH的特殊参数
@
和*
都表示“扩展位置参数,从1开始”,但形式稍有差异,但在数组里使用好像是可以通用的。
- 打印整个数组:
echo ${array[*]} 或者 echo ${array[@]}
- 打印某一数组元素:
echo ${array[3]}
- 清除指定的单个数组元素:
unset array[2]
- 清除整个数组:
unset array
- 引用数组:
echo ${array[n]}
- 遍历数组:
filename=(`ls`)
for var in ${filename[@]};do
echo $var
done
- 数组实用示例:
# 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 个字符
评论已关闭