bash 循环与数组

for NAME in LIST;do

done

列表生成方法

1){ start .. end }
$(seq start [[step]end] )


2)glob  
 /etc/rc.d/rc3.d/K*
3)命令


for i in {1..20;do}
    ping -c 1 -w 1 ....&>/dev/null
    return 
done


while [ $i -le 100];do
    let i++
done

i=1
until [ $i -gt 100 ]; do  #为假则进入循环
    let i++  
done


循环控制语句
##################
continue [次数]:  ##可以写次数,表示提前结束第几次循环,直接进入下一轮判断
    while  [] ; do
        ...
        if [] ; then
         continue
        fi
        ...
    done
break
#############
break []:
    while [] ;do
    ..
    if [] ;then
        break
    fi
    ..
done 

例如


#########
#!/bin/bash
declare -i i=0
declare -i sum=0

until [ $i -gt 100 ]; do
    let i++
    if [ $[$i%2] -eq 1 ]; then
        continue
    fi
    let sum+=$i
done
############
bash -n ..sh  语法检测一下


死循环:
while true;do
  if [] ;then
    break
  fi
  ...
done


until false;do
 ..
done

###############
特殊用法

while read  i;do
  ..
done < /file

依次读取file每一行,幅值给变量line


for ((i=0;i<=5;i++)); do
..
done

case支持glob风格通配符
  *任意长度任意字符
  ?任意单个字符
  []指定范围内的任意单个字符
  a|b  a或b
  string) 


函数function
  过程化编程:代码重用
    模块化编程
    结构化编程


语法1
    function name {
    }

语法2    
    name() {
    }

return值 0成功  1-255失败

函数中局部变量定义
local  name=value

函数递归:函数直接或间接调用自身


阶乘的递归:
############
#!/bin/bash

fa()  {
    if [ $1 -eq 0 -o $1 -eq 1 ];then
        echo 1 
    else
        echo $[$1*$(fa $[$1-1])]
    fi
}

fact $@
###########

n阶斐波那契数列
##############
#!/bin/bash
fab() {
    if [ $1 -eq 1 ];then
    echo 1
    elif [ $1 -eq 2 ];then
    echo 1
    else
    echo $[ $(fab $[$1-1])+$(fab $[$1-2])]    
    fi
}
fab $@
##############


数组:存储多个元素的连续的内存空间
    数组名
    索引:编号从0开始
    也可以支持使用自定义的格式,而不仅仅是数值格式
    bash数组支持稀疏格式(比如1-10;其中456没有元素)


    引用数组中的元素:${array[index]}
声明数组
    declare -a  ARRAY
    declare -A  ARRAY  关联数组;

幅值
a[0]="ff"


a=("1" "2" ...)


a=([0]="1" [3]="2" ...)

read array

引用数组  ${a[index]}
省略index表示引用下标0元素

所有元素  令index=*  @

统计数组长度  ${#a[*]}


引用指定元素(数组切片)
${a[@]:2:3} 引用2-3个变量名

${a[@]:2}   显示2后面的所有元素

向数组中追加元素
    array[${#array[*]}] 
删除数组
    unset array[index]
关联数组
    declare -A array
    array=([index_name1]='val1' [index_name2]='val2' ...)


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值