嵌入式驱动开发的前期Linux 和 C学习(五)

来源:互联网 发布:手机淘宝查价格走势 编辑:程序博客网 时间:2024/06/10 06:35
今天整理的linux内容:


1) shell脚本:
以#!/bin/bash       //申明使用的shell脚本的版本
a)while循环
while 测试条件
do
 命令表
done
b)for循环
格式1:
for 变量 in 值表
do
命令
done
格式2:
for 变量 in 文件正则表达式(m*.c)
do
命令
done
格式3:
for 变量 in $* (此行等价于 for 变量)
do
命令
Done
注意for与while 控制循环方式的不同。
c)until 语句
until 测试条件
do
命令
Done
d)break语句: break [n] 跳出n层循环,默认为1。用在循环语句中。
continue语句:跳出本次循环之后的语句,回到循环开头,进行下一次循环。用在循环语句中。

e)exit语句:退出一个shell程序,并设置退出值。格式为:exit [n]   n为退出值,若未给出n值,则退出值为最后一个命令的执行状态。
Return语句:一般用于函数中,设置函数的退出值。格式为: return [n]

f)  shell函数:
[function] 函数名()  #注意这里function可以不写
{
命令表
}

对shell函数的调用形式:函数名 参数1  参数2。这里参数1和参数2相当于函数的位置参数,注意同shell脚本的位置参数区别开来。


g) 注意test进行条件测试的几种方式:
字符串的比较;数字比较;文件操作符(如测试文件读权限,文件是否为目录文件等);逻辑操作符(!,-a,-o);特殊条件测试(true和false)。注意空格。
注:可以使用:bash  -x 脚本文件名,对脚本进行简单调试。


h) 补充一点,当位置参数的个数大于9个时,不能直接引用。比如用 $10来引用第10个位置参数,这是不对的。可以结合shift命令来引用大于9的位置参数。
脚本代码中可以用set 来直接设置位置参数,形如:set hello word  hello就是$1,word就是$2。
i)算数运算
在脚本中执行算数运算时,要用let命令,也可以用let命令的替代形式((a=b+c))。这里算数表达式使用c语言中表达式的语法、优先级和结合性。


Shell编程例子:
一、求1到10之间的和:
#!/bin/bash
sum=0
num=1
while [ $num -lt 11 ]
do
let sum=$num+$sum
let num=$num+1
done
echo "sum :$sum"


二、将一个目录($1)下的普通文件拷贝到另外一个目录($2)下:
#!/bin/bash
if [ $# -ne 2 ]
then
echo "need two parameter"
exit
fi
files="`ls $1`"
cd $1
for file in $files
do
if [ -f $file ]
then
echo $file
cp "$file" $2 -f
else
echo 'over'
fi
done


三、批量创建文件:脚本文件名目录文件名个数
#!/bin/bash
if [ $# -ne 3 ]
then 
echo “need three parameters”
exit
fi
filename=$2
num=1
while [ $num -le $3 ]
do       
#echo $1$2$num;
`touch $1$2$num`
        let  num+=1;
done


四、通过函数判断某用户是否正在使用系统:
#!/bin/bash
fun (){
echo "$?"
user=`who|grep ^"$1 ">/dev/null`
return $user
}


fun $1
if [ $? -eq 0 ]
then 
echo "logining"
else 
echo "not logined"
fi


五、计算0-100内能被3整除的数之和
#!/bin/bash
sum=0
num=100
while [ $num -gt 0 ]
do
let tmp=num%3
if [ $tmp -ne 0 ]
then
let num=num-1
continue
fi
let sum=sum+num
let num=num-1
done
echo "result:$sum"