原创 Shell脚本编程总结

2009-10-24 15:10 2367 7 7 分类: MCU/ 嵌入式

    shell是一种有特殊功能的程序,它是用户和内核程序的一个接口。使用Shell可以编写脚本,脚本是一种按行解释的程序。





脚本的编写一般都是从#!\bin\sh开始的,编写完一个脚本后,想要要执行它,首先,要让脚本获得执行的权限,添加权限使用chmod命令,其格式为chmod [u/g/o/a] [+/-/=] [权限]filename



例如:


脚本内容


#/bin/sh


mkdir ~/test


echo "mkdir successfuuly"


为其添加权限


chmod 777 test.sh


./test.sh


执行结果为:


mkdir successfuuly



第一个7为当前用户对该脚本可读可写可执行,第二个7为同组用户对该脚本可读可写可执行,第三个7为其他用户对该脚本可读可写可执行,


Shell命令中有一些具有特殊意义的字符,使用这些字符可以简化一些变量的输入。


$?最后一次执行的命令的返回码


$$shell进程自己的PID


$!Shell进程最近启动的后台进程的PID


$#命令行参数的个数(不包括脚本文件的名字在内)


$0脚本文件本身的名字


$1 $2第一个,第二个命令行参数


"$*"$1,$2,$3,$<?XML:NAMESPACE PREFIX = ST1 />4将所有命令行参数组织成一个整体,作为一个单词


"$@"$1"$2""$3"将多个命令行参数看做是多个“单词”


使用脚本也可以调用C代码,例如:


C代码:


int main(int argc,char **argv)


{


 int i;


 for(i=0;i<argc;i++)


 printf("%d:[%s]\n",i,argv);


}


gcc arg.c -o arg编译这段C代码Shell脚本如下:


#!/bin/sh


echo $$


echo $#


echo "usage:$0 arg1 agr2"


./arg "$@"


./arg "$*"


获得执行权限:shmod 7 t3.sh


./t3.sh copy files to $HOME


执行结果:


2515


0


usage:./t3.sh arg1 arg2


0:[./arg]


1:[copy]


2:[files]


3:[to]


4:[/root]


0:[./arg]


1:[copy files to /root]


选择结构


if结构,case结构


循环结构


while结构


until结构


for结构


for结构实例代码


#!/bin/sh


counter=0


read d                   #读入文件目录字符串


b=$d                    #另存文件目录


d="$d/*"                 #给目录尾部加上/*,这样$d就为当前目录文件


for files in $d             #for循环统计文件数


do


counter=`expr $counter + 1`


done


echo "there are $counter files in $b"


给与执行权限chmod 7 s.sh


./s.sh             #运行脚本


/mywork          #输入文件目录


执行结果为:


there are 6 files in /mywork


用这个脚本可以方便统计输入的文件目录中的文件个数。


<?XML:NAMESPACE PREFIX = O />

 


在使用Shell脚本编写程序的时候可以看到,Shell命令的语法和C语言的语法有很大的相似之处,从这里我体会到了老师说的只要能熟练的掌握C语言,想要换到其他的语言上是十分容易的。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条