shell之列表的定义与循环

字符串列表定义方法1:

a=(f1 f2 f3 f4) for i in ${a[*]}#遍历每一个列表值

for i in ${a[@]}#等价与上一句

实例:

#!bin/bash a=(f1 f2 f3 f4) for i in ${a[*]}; do echo ”$i“ if [ "$i" == "f1" ]; then#判断字符串是否相等,注意前后要有空格,否则变为赋值语句 echo ”f1 finded“ else echo "NOTFOUND" fi done

字符串列表定义方法2:

a[1]=f1 a[2]= f2 a[3]= f3 a[4]= f4

实例2:

#!bin/bash a[1]=f1 a[2]=f2 a[3]=f3 a[4]=f4 for i in ${a[*]}; do echo ”$i“ if [ "$i" == "f1" ]; then echo ”f1 finded“ else echo "NOTFOUND" fi done

每个列表元素的

echo "${a[2]}" #!bin/bash a[1]=f1 a[2]=f2 a[3]=f3 a[4]=f4 echo "${a[1]}" echo "${a[2]}"

1 获取下标为n的元素:

1 variable[n]
1 variable[n]
1 variable[n]

而且不存在数组下标溢出的情况,如果 n>= 数组的长度,那么为空,不会报错。

2 获取数组长度

1 ${#variable[@]}
1 ${#variable[@]}
1 ${#variable[@]}

或者

1 ${#variable[*]}
1 ${#variable[*]}
1 ${#variable[*]}

那么如何用for遍历呢?一共有两种方式:

直接遍历每一个值

1 for i in ${variable[@]}; do

1 2 # do something.... done
1 2 # do something.... done
1 2 # do something.... done

2遍历每一个值的下标

for i in $(seq 0 ${#variable[@]}); do

1 2 3 e=${variable[$i]} # do something.... done
1 2 3 e=${variable[$i]} # do something.... done
1 2 3 e=${variable[$i]} # do something.... done

以上两种方法 把 @ 换成 * 也行。

字符串列表定义方法1: a=(f1 f2 f3 f4) for i in ${a[*]}#遍历每一个列表值 for i in ${a[@]}#等价与上一句 实例: #!bin/bash a=(f1 f2 f3 f4) for i in ${a[*]}; do echo ”$i“ if [ "$i" == "f1" ]; then#判断字符串是否相等,注意前后要有空格,否则变为赋值语句 echo ”f1 finded“ else echo "NOTFOUND" fi done 字符串列表定义方法2: a[1]=f1 a[2]= f2 a[3]= f3 a[4]= f4 实例2: #!bin/bash a[1]=f1 a[2]=f2 a[3]=f3 a[4]=f4 for i in ${a[*]}; do echo ”$i“ if [ "$i" == "f1" ]; then echo ”f1 finded“ else echo "NOTFOUND" fi done 每个列表元素的 echo "${a[2]}" #!bin/bash a[1]=f1 a[2]=f2 a[3]=f3 a[4]=f4 echo "${a[1]}" echo "${a[2]}" 1 获取下标为n的元素: 1 variable[n] 而且不存在数组下标溢出的情况,如果 n>= 数组的长度,那么为空,不会报错。 2 获取数组长度 1 ${#variable[@]} 或者 1 ${#variable[*]} 那么如何用for遍历呢?一共有两种方式: 直接遍历每一个值 1 for i in ${variable[@]}; do 1 2 # do something.... done 2遍历每一个值的下标 for i in $(seq 0 ${#variable[@]}); do 1 2 3 e=${variable[$i]} # do something.... done 以上两种方法 把 @ 换成 * 也行。
经验分享 程序员 微信小程序 职场和发展