Shell 脚本编程

#! /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

 

上一篇:The 7 Most Useful Data Analysis Methods and Techniques


下一篇:How to reset a commit