shell脚本入门及基本元素

命令和参数


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

  printf 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的标准输入

你可能感兴趣的:(shell脚本入门及基本元素)