#! /bin/sh #while 循环 i=0 count=100 while true do echo {$i} echo $RANDOM if [ $i == $count ] then break fi let "i=i+1" done #for 循环 for i in 1 2 3 4 5 6 7 8 9 10 do echo {$i} echo $RANDOM done
数组
#!bin/bash #定义数组 #在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为: #例如: array_name=(value0 value1 value2 value3) #或者 array_name=( value0 value1 value2 value3 ) #还可以单独定义数组的各个分量: array_name[0]=value0 array_name[1]=value1 array_name[9]=value9 #可以不使用连续的下标,而且下标的范围没有限制。 #读取数组 #例如: valuen=${array_name[0]} echo $valuen #使用 @ 符号可以获取数组中的所有元素,例如: echo ${array_name[@]} #获取数组的长度 # 取得数组元素的个数 length=${#array_name[@]} echo $length # 或者 length=${#array_name[*]} echo $length # 取得数组单个元素的长度 lengthn=${#array_name[1]} echo $lengthn
随机数
1 # !bin/bash 2 #T507_I2C_压力测试 3 4 sum=0 5 6 for (( sum = 0;sum < 100;)) 7 do 8 9 echo >>log.txt 10 echo 11 echo --------------------I2c_TEXT_$sum-------------------- >>log.txt 12 echo --------------------I2c_TEXT_$sum-------------------- 13 14 #用于生成一段特定长度的有数字和字母组成的字符串,字符串中元素来自自定义的池子。 15 16 seq=(0 1 2 3 4 5 6 7 8 9 a b c d e f) #随机池 17 array_name[0]=i2cset 18 array_name[1]=-f 19 array_name[2]=-y 20 array_name[3]=4 #I2C_BUS number 21 array_name[4]=0x3c #I2C Address 22 array_name[5]=0x12 #I2c_0x3c_寄存器地址 23 24 num_seq=${#seq[@]} #随机池的大小 25 26 count2=${#array_name[@]} 27 echo $count2 28 count=10 #写入数据的长度 29 length=2 30 int=$count2 31 i=0 32 for(($int;$int<($count+$count2);)) 33 do 34 for (( i = 0; i < $length;)) 35 do 36 seqrand[$i]=${seq[$((RANDOM%num_seq))]} #随机产生两位数,放到seqrand数组保存 37 let "i=i+1" 38 done 39 #array_name[$int]=0x${seqrand[0]}${seqrand[1]} #将seqrand数组内的数据拼接到array_name里 40 array_name[$int]=0X$(IFS=; echo "${seqrand[*]}") #将seqrand数组内的数据拼接到array_name里 41 let "int++" 42 done 43 echo 写入的数据: >> log.txt 44 echo ${array_name[@]} >> log.txt 45 echo 读取命令: >> log.txt 46 echo i2cget -f -y 0x3c 0x12 w >> log.txt 47 48 49 let "sum=sum+1" 50 unset array_name #删除数组 51 done
注释
1 #!bin/bash 2 #多行注释 3 :<<EOF 4 echo 注释内容... 5 echo 注释内容... 6 echo 注释内容... 7 EOF 8 #EOF 也可以使用其他符号: 9 :<<' 10 echo 注释内容... 11 echo 注释内容... 12 echo 注释内容... 13 ' 14 echo ! 15 16 :<<! 17 echo 注释内容... 18 echo 注释内容... 19 echo 注释内容... 20 !
字符串
1 #!bin/bash 2 your_name="runoob" 3 # 使用双引号拼接 4 greeting="hello, "$your_name" !" 5 greeting_1="hello, ${your_name} !" 6 echo $greeting $greeting_1 7 # 使用单引号拼接 8 greeting_2='hello, '$your_name' !' 9 greeting_3='hello, ${your_name} !' 10 echo $greeting_2 $greeting_3 11 12 #获取字符串长度 13 string="abcd" 14 echo ${#string} #输出 4 15 16 #提取子字符串 17 #以下实例从字符串第 2 个字符开始截取 4 个字符: 18 string="runoob is a great site" 19 echo ${string:1:4} # 输出 unoo 20 #注意:第一个字符的索引值为 0 21 22 #查找子字符串 23 #查找字符 i 或 o 的位置(哪个字母先出现就计算哪个): 24 string="runoob is a great site" 25 echo `expr index "$string" io` # 输出 4 26 #注意: 以上脚本中 ` 是反引号,而不是单引号 ',不要看错了哦。
变量
1 #!bin/bash 2 echo "Hello World !" 3 your_name="runoob.com" 4 echo $your_name #使用一个定义过的变量,只要在变量名前面加美元符号即可 5 your_name=com.ljh 6 echo ${your_name} 7 str='Hello, I Know you are \"$your_name\"!\n' #单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 8 echo $str 9 str="Hello, I Know you are $your_name !\n" #双引号里可以有变量 10 echo $str 11 str="Hello, I Know you are \"$your_name\" !\n" #双引号里可以出现转义字符 12 echo $str