嵌入式linux开发:[7]shell
1、1.1 shell如下为一个3G拨号看门狗程序:#!/bin/shecho $1mdev -s/app/test.sh &cp /app/resolv.conf /etc/sleep 10ifconfig eth0 downsleep 2while truedo cp/app/resolv.conf /etc/ ping -s 1 -c 1 $1 if [ "$?" !="0" ] then ncount=$((ncount+1)) echo "ttt " if [ $ncount -eq 5 ] then killall -9 pppd let ncount=0 sleep 2 /app/pppd call wcdma& fi sleep 1 else let ncount=0 echo $ncount sleep 2 fidone
2、1.1.1 变量linux shell的变量可以不定义而直接使用1.1.2 比较一、test命令 test命令是shell内部命令,它计算作为其参数的表达式是真还是假。 如果表达式为真,则test返回0(注意与C语言0表示false不同),如果表达式为假,返回非0。 shell提供了另外一个调用test命令的方式,就是用方括号[]来代替单词test。 调用test命令的格式为: test expr1 opr expr2 或是 [ expr1 opr expr2 ] test opr expr1 或是 [ opr expr1 ] (注意方括号与表达式之间的空格必须存在)二、逻辑运算符 -a expr1 -aexpr2 逻辑与 -o expr1 -oexpr2 逻辑或 ! !expr1 逻辑非三、数值判断 -eq num1 -eqnum2 是否相等 -ne num1 -nenum2 是否不相等 -gt num1 -gtnum2 是否大于 -ge num1 -genum2 是否大于等于 -lt num1 -ltnum2 是否小于 -le num1 -lenum2 是否小于等于四、字符串判断 = str1 = str2 字符串是否相等 != str1 != str2 字符串是否不等 -n -n str1 字符串长度是否不等于0 -z -z str2 字符串长度是否等于0五、文件判断 -r -r filename 文件是否存在且可读 -w -w filename 文件是否存在且可写 -s -s filename 文件是否存在且长度非0 -f -f filename 文件是否存在且是普通文件 -d -d filename 文件是否存在且是一个目录六、命令行参数/位置变量 $0 脚本的名字 $1, $2, ..., $9 脚本第1个到第9个命令行参数 $# 命令行参数的个数 $@ 或是 $* 所有命令行参数 $? 最后一条命令的退出状态 $$ 正在执行进程的ID(PID)1.1.3 条件if [ -e /mnt/mtd/boot.sh ]; thensh /mnt/mtd/boot.shelsecp /app/boot.sh /mnt/mtdsh /mnt/mtd/boot.shfi1.1.4 循环1.1.5 运算1:使用 expr 外部程式 加法 r=`expr 4 + 5` echo $r 注意! '4' '+' '5' 这三者之间要有空白 r=`expr 4 * 5` #错误 乘法 r=`expr 4 \* 5`2:使用 $(( )) r=$(( 4 + 5 )) echo $r 给位置变量赋值: set One TwoThree echo $1 $2 $3 结果显示:One TwoThree3: let 给变量赋值 let ncount=0