linux 循环判断、数组、循环

通过一个循环展示数组、循环、Case条件判断结构
#/bin/bash
if [ $# == 0 ];then
   echo "please input the name"
   exit 1
fi
parm1=$1

#存入数组
for((i=0;i<=${#parm1};i++))
do
arr[$i]=${parm1:$i:1}
done

#循环显示数组元素
for((i=0;i<=${#arr[@]};i++))
do
   echo ${arr[$i]}
done

#循环显示数组元素的另一种写法
for n in ${arr[*]}
do
    echo $n
done

#循环用while的方式
declare -i cnt=0
while [ $cnt -le ${#arr[@]} ];do
    echo ${arr[$cnt]}
    let cnt=cnt+1 #或cnt=$((cnt+1))
done

#while结合case语句
declare -i cnt=0
while [ $cnt -le ${#arr[@]} ];do
   #echo ${arr[$cnt]}
   txt=${arr[$cnt]}
   case $txt in
       a) echo "aa";;
       g) echo "gg";;
       b | f)
          echo "b|f";;
      [ce])
          echo "c and"
          echo "[ce]"
          ;;
       *)
          echo "not match";;
   esac

变量总结:
1、变量都可直接使用,无需定义,默认为字符型
2、数字类型要定义,方式为:declare -i varname
3、数字加运算用:let var=var+1 或 var=$((var+1)),其他运算格式一致,操作符不同而已
3、字符串长度:${#varname}
5、字符串内容截取:${varname:pos:len} {变量名:开始位置:长度},省略长度则从开始到最后

数组总结
1、数组赋值用arr[1]=值
2、读取组数值var=${arr[1]}
3、数组元素总数var=${#arr[@]}
4、数组所有元素var=${arr[*]},如用在echo可在一行显示所有元素内容;也可用在for n in 格式则
可循环读取元素,该种方式类似于c#的foreach枚举方式

Case总结
1、case格式为case $var in
                   match item1)
                         语句 ;;
                   match item2)
                         语句 ;;
                   *)
                         语句...
                         语句...
                         ;;
    esac

2、匹配多个项目: match item1 | match item2))
3、匹配多个项目的另一种写法:[abc]) 只要是a或b或c都满足,并不是满足abc
4、匹配项目之外:*)

原文地址:https://www.cnblogs.com/doclaim/p/3139597.html