linux下shell script学习(一)

来源:互联网 发布:生命世界网络构图 编辑:程序博客网 时间:2024/05/17 02:59

对于以后想从事嵌入式软件开发工作的人来说,至少要能看懂shell脚本,最好能自己编写shell脚本,因为当你在linux操作系统做开发你会发现,shell脚本能够解决你总是重重复复做的一些事,给你节约很多宝贵的时间!那么什么是shell script呢?其实shell脚本是利用shell的功能所写的一个“程序”,这个程序是使用纯文本文件,将一些shell的语法与命令写在里面,搭配正则表达式,管道命令与数据流重定向,达到我们想要的处理目的。shell script本质上是shell命令的集合。

下面我们来学习最简单的shell script编写与执行:

编写:

[zoulei@CentOS test]$ vim test.sh  1 #!/bin/sh  2 a="hello world!"  3 num=2  4 echo "a is : $a num is ${num}"

***************************************************************************************************************************************************************************************************

注意:第一行#!/bin/sh声明这个script使用的shell名称,因为我们使用的是bash,所以必须要以#!/bin/sh来声明这个文件内的语法使用bash的语法,那么当这个程序被执行时,它就能加载bash的相关配置文件,并且执行bash来使下面的命令能够执行。

***************************************************************************************************************************************************************************************************

执行:

[zoulei@CentOS test]$ sh test.sha is : hello world! num is 2[zoulei@CentOS test]$ chmod a+x test.sh[zoulei@CentOS test]$ ./test.sha is : hello world! num is 2nd[zoulei@CentOS test]$ source test.sha is : hello world! num is 2

******************************************************************************************************************************************************************************************************

   注意:这里执行test.sh脚本文件有三种方式,一种是sh test.sh,这里的sh命令其实是bash的符号连接。还有一种是当作可执行文件来执行,不过执行之前得将test.sh文件赋予可读可写可执行权限才行,第三种是source test.sh,它与前面两种的区别是,当我们写个脚本来改变环境变量,前面两种只是在子进程bash中执行,而第三种则会在父进程中执行,最终会使环境变量生效的是第三种执行方式。

******************************************************************************************************************************************************************************************************

下面在运用条件判断式if...then...fi 编写执行一个shell脚本:

编写与执行

[zoulei@CentOS test]$ vim test.sh#!/bin/bashecho -e "Hello world"if [ "SHELL" = "/bin/bash" ];thenecho "your login shell is bash"elseecho "your login shell is not bash but $SHELL"fi[ -f "/etc/shadow" ] && echo "this computer uses shadow passwords"if [ -f "/etc/shadow" ];thenecho "电脑密码"elseecho "并没有"fi[zoulei@CentOS test]$ sh test.shHello worldyour login shell is not bash but /bin/bashthis computer uses shadow passwords电脑密码
**************************************************************************************************************************************************************************
注意:1.中括号【】使用格外小心,”[“后面必须跟一个空格,再跟“”,"】"前面也必须紧跟一个空格,否则会出错。

           2.echo语句也必须紧跟一个空格,不然也会出错。

           3.[ -f "/etc/shadow" ]语句是判断/etc/shadow是否是一个文件。

           4.上面的shell脚本中只有一个判断式,可以这样看:

       if [ 条件判断式 ]; then

           当判断式成立时,可以进行命令的工作内容;

       fi         <==将if反过来写,成为fi,结束if 之意!

           5.等号"="两边都必须要有空格,否则出错,在bash中一个等号与两个等号结果是一样的,通常一个等号代表“变量的设置”,两个等号则是代表

             “逻辑判断”,由于中括号内重点在于“判断而非设置变量”,因此最好使用“==”较佳!

***************************************************************************************************************************************************************************


原创粉丝点击