shell脚本入门及基本元素

Posted on 2016-04-23 20:35  鬼冢英吉  阅读(311)  评论(0)    收藏  举报

命令和参数


    #!/bin/sh  其中#!用来告诉系统它后面的参数是用来执行该文件的程序,必须放在脚本的首行,不然会在执行脚   本  的时候报错。当一个文件开头的两个字符是#!时,内核会扫描其它的部分看是否存在该行的其余部分,看是否存在可用来执行程序的解释器的完整路径,此外,内核还会扫描是否有一个选项要传递给解释器。

    eg:csh脚本 路径 /usr/ucb/whi
    第一行    #!/bin/csh -f ,如果shell的查找路径里面有/usr/ucb,当用户键入whi -q /dev/tty 这条命令时,内核在解释过#!这行后,便会以如下的方式引用csh:
    /bin/csh -f /usr/ucb/whi  -q  /dev/tty

shell的三种命令:内建命令,shell函数,外部命令
   * 内建命令:shell本身所执行的命令 eg: cd ls echo 这类的命令
   * shell函数:功能健全的一系列代码,可以像命令那样引用
   * 外部命令:shell副本所执行的命令

 变量
在shell编程中,所有的变量都由字符串组成,并且不需要对变量进行声明,对一个变量赋值:
         变量名=值
 如果想取出变量的值,需要在变量名前加美元符$,变量名=值,这中间不能有空格
 如果变量的值含有空格时,要加上引号,像这样:a="1 2 3"

简单的IO命令及重定向
    程序应该有数据来源端 、目的端、报告错误的地方,在shell里面分别对应标准输入,标准输出,和错误标准输出。
    简单的echo,printf命令 (IO命令)
       echo string      用来产生shell脚本的输出
       echo 将各个参数打印到标准输出,并以换行符结束,如果不需要用 换行符结束,可用echo -n 或者echo "  \c"
       pintf string 【arguments】   可以按格式输出简单的字符串
       其中,第一部分是一个字符串,用来描述输出的排列方式,此字符串包含了按字面显示的字符以及格式声明
       格式声明就是表示参数应该按照何种格式进行输出
                eg:printf "the first program always prints '%s,%s'!\n" hello world 
                输出:   the first program always prints  'hello world ' 以字符串的格式输出hello world
       printf "hello world \n" 注意:printf不会像echo那样,会自动提供一个换行符号
   重定向和管道符
       改变默认的I/O来源端和目的端,实际上,系统默认的标准输入(键盘),标准输出(终端)
    *  < 改变标准输入   > 改变标准输出  
          eg:program < file1        program> file2
    * >>追加 如果目的文件不存在,>>会重新新建一个,存在的话,会添加信息到原文件结尾处。
    *  | 管道符
          eg: p1 | p2  p1的标准输出是p2的标准输入