shell编程入门

shell编程入门


变量类型:

  环境变量:

    作用域为当前shell以及其子shell

    创建:export VarName

  本地变量

    作用域:为整个bash进程,进程结束该变量就被撤销了

    创建: VarName=Value

  局部变量:

    作用域:只能是某个函数,也只能在函数中使用

  位置变量:用来引用函数的参数

    例如:./file.sh /etc/fatab /etc/initab

        $1:/etc/fstab

        $2:/etc/initab

        $n:..

        shift:第一个位置变量被删除,后面的位置变量一次进1、

        shift n:一次删除n个位置变量,后面的位置变量依次进你n

  特殊变量:

    $?:返回上一个命令的执行状态返回值

    $#:表示位置参数的个数

    $*:位置参数列表

    $@:位置参数列表

    

    程序执行状态有两种返回值

      一个是0:表示执行成功

      一个是(1-255,其中1,2,127系统留用)表示执行错误

  脚本在执行时会启动一个子shell进程:

    命令行中启动的脚本会继承当前shell环境变量

    系统自动执行的脚本(非命令行启动)就需要自我定义需要的各环境环境变量

脚本基础:

  第1行为shebang----->指定解释器比如:/bin/bash

  脚本执行的几种方法:

    1、给予该脚本一个执行权限,然后输入文件的路径就可以执行

    2、将该脚本所在的路径写入全局变量PATH中去,直接输入该脚本的名称即可执行


bash中的条件判断:

  1、整数测试

  2、字符测试

  3、文件测试

条件测试的表达式‘

  [ expression ]

  [[ expression ]]

  test expresssion

整数比较:

  -eq :测试两个整数是否相等

  -ne:测试两个整数是否不相等

  -gt:测试一个整数是否大于另一个整数

  -lt:测试一个整数是否小于另一个整数

  -ge:大于或等于

  le:小于等于

命令间逻辑关系(短路原则):

  $$:逻辑与

  ||:逻辑非


条件语句:

  1

  if [] ; then

  statement1

  statement2

  ..........

  fi

  2

  if []

  then

    statement1

    statement2

    ..........

  fi

  3

   if  [] ;then

     elif [] ;then

     elif [] ;then

      ......

   else

  fi

文件测试:

  -e FILE--->测试文件是否存在

  -f FILE--->测试文件是否是普通文件

  -d FILE----->指定路径是否为目录

  -r FILE------>测试当前用户对指定文件是否具有读权限

  -w FILE----->测试当前用户对指定文件是否具有写权限

  -x FILE------>测试当前用户对指定文件是否具有执行权限

定义脚本的退出状态码:

  exit:退出脚本

  如果脚本没有明确定义退出状态吗,那么,最后执行的一条命令的退出状态吗为脚本的退出码

测试脚本是否有错误:

  bash -n 脚本名称--->错误信息不一定可靠

  bash -x 脚本名称--->单步执行


功能:是一个文本编辑器,是逐行编辑文本。

处理过程:sed将文本的逐个将一行读入内存中,在内存处理(编辑)之后,在显示在屏幕上,sed默认情况下不编辑源文件,只对内存的内容进行编辑

使用方法:

  sed 'AddressCommmand' file1,file2,.....

Address:

  1、StartLine,Endline:比如1,100

    $:最后一行

    $-1:倒数第二行

  2、/regexp/

  3、/pattern1/,/pattern2/

    第一次被pattern1匹配到的行到pattern2第一次匹配到的行

  4、LineNumber:指定的行

  5、 StartLine,+N:从开始的行向后N行

  6、StartLine ,~N:从开始的行开始向前N行

Command:

  d:删除符合条件的行

  p:显示模式空间的行

  a \string:在指定的行后面追加新行

  i \sring :在指定的行前面添加内容

  r file :将制定文件的内容写到指定的行

  w file:将符合条件的行写到指定的文件中去

  s \pattern\string\:查找并替换

    s \pattern\string\修饰词(g【global】,i【忽略大小写】)

  &:引用模式匹配到的整个串

  \(\),\1\2--->后向引用

options:

  -n : 静默模式,不默认显示模式空间中间的行

  -i:直接修改源文件

  -e SCRIPT -e SCRIPT :同时执行多个文件

  -f /pathtofile  file -->对文件file实施pathtofile中的脚本


字符串测试

  =,==

  !=

  <

  >

  -n string 判断字符串是否为空,如果为空就是为真

  -s string 判断字符串是否不空,不空就为真

循环结构:

  for VAR in 列表 ;do

    循环体

  done

 遍历完成之后,退出

生成列表

整数列表

{n1..n2}:生成n1到n2的列表

seq [起始数 [步进长度]] 终止

 

  

  

  

 

  

posted @ 2018-12-08 00:04  mindon  阅读(143)  评论(0编辑  收藏  举报