SHELL编程(一)

  1. shell文件一般带后缀.sh
  2. shell文件第一行的#!/bin/bash不是必须的,#!/bin/bash是指此脚本使用/bin/bash来解释执行。#!是一个特殊的表示符,其后跟着解释此脚本的shell路径。如果一个脚本在第一行没有加上#!+shell路径这一行,那么,脚本会默认当前用户登录的shell,为脚本解释器。我们通常所用的shell都是bash,如果哪天登录到sh,再使用以上类型的脚本,就会有问题。因此,大家应该养成脚本首行加上#!+shell路径的习惯。
  3. 全路径 /root/shell/wc.sh执行会出现权限问题,可以通过添加权限chmod +x wc.sh来解决。有了权限也可以使用相对路径./wc.sh执行。(收回权限chmod -x)

    SHELL编程(一)

     

  4. 使用sh命令执行脚本文件,可以没有chemod +x 添加权限,没有脚本文件第一行解释器#!/bin/bash;不使用sh命令,需要chemod +x 添加权限 且 脚本文件第一行解释器#!/bin/bash。脚本文件从上而下,一行行执行。

    SHELL编程(一)

     

  5. -x是debug模式。脚本文件第一行#!/bin/bash -x,或者使用sh命令执行sh -x wc.sh,执行结果中带“+”是编译的内容,不带“+”是编译执行的结果

    SHELL编程(一)

     

  6. 静态变量:如RZ=meng    RZ='meng'     RZ="meng" (三种方式都行,等号两边不能出现空格) 动态变量 RZ=`meng`这里需要注意的是动态变量的取值最好是补全路径,不然容易出现找不到变量

    SHELL编程(一)

    SHELL编程(一)

     

    变量RZZ不存在,所以空出一行;动态变量NAME的值找不到,可以使用echo $PATH来查看动态变量是否存在

  7. 传递参数

    SHELL编程(一)

     

  8. shell脚本只支持一维数组,以()表示,用空格分割,@和*都表示所有,数组从0开始,#表示个数

    SHELL编程(一)

     

  9. if判断,==两边需要添加空格

    SHELL编程(一)

     

  10. 循环

    SHELL编程(一)

    SHELL编程(一)

     

     

  11. 分割

    SHELL编程(一)

     

  12. awk是行处理器 依次对每一行进行处理,然后输出。命令形式 awk{},$0表示整个当前行,$1表示每行第一个字段,$2表示每行第二个字段,NR表示每行的字段,-F定义分隔符

    SHELL编程(一)

    SHELL编程(一)

     

  13. send