• shell编程


    Shell脚本是一个包含一系列命令序列文本文件。当运行这个脚本文件时,文件中包含的命令序列将得到执行 。

    语法:

    Shell脚本的第一行必须是如下格式:#!/bin/sh
    符号#!用来指定该脚本文件的解析程序。在上面例子中使用/bin/sh来解析该脚本。当编辑好脚本后,如果要执行该脚本,还必须使其具有可执行属性

    注释:

    在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。如果使用了注释,即使相当长的时间内没有使用该脚本,也能在很短的时间内明白该脚本的作用及工作原理。

    变量:

    shell编程中,所有的变量都由字符串组成,并且不需要预先对变量进行声明,:s1(演示)

    #!/bin/sh
    #set variable a
    a="hello world"
    # print a
    echo "A is:"
    echo $a

    注意:shell会去搜索变量的值,如果这个变量没有值,则就无打印。

    默认变量

     $# :传入脚本的命令行参数个数
    $* :所有命令行参数值,在各个参数值之间留有空格
    $0 :命令本身(shell文件名)  // ./hello.sh
    $1 :第一个命令行参数
    $2 :第二个命令行参数

     

    局部变量

    在变量首次被赋值时加上 local 关键字可以声明一个局部变量,例:s4(演示):

    #!/bin/bash
    hello="var1"
    echo $hello
    function func1 {                      //定义函数
    local hello ="var2"
    echo $hello
    }
    func1
    echo $hello 

    注意:变量

    变量赋值时,“=”左右两边都不能有空格
    BASH 中的语句结尾不需要分号

    if语句   //每一个if对应一个fi

    if [ expression ]
    then
        #code block
    fi

    if [ expression ]
    then
      #code block
    else
      #code block
    fi

    if [ expression ]
    then
      #code block
    else if [ expression ]
      then
        #code block
      else
        #code block
      fi
    fi 

    if [ expression ]; then
      #code block
    elif [ expression ]
      then
        #code block
      else
        #code block
      fi
    fi

    逻辑比较

    比较操作 整数操作 字符串操作
    相同 -eq =
    不同 -ne !=
    大于 -gt >
    小于 -lt <
    大于或等于 -ge
    小于或等于 -le
    为空 -z
    不为空 -n
    比较整数a和b是否相等:if [ $a = $b ] (也可用eq)
    判断整数a是否大于整数b:if [ $a -gt $b ]
    比较字符串a和b是否相等:if [ $a = $b ]
    判断字符串a是否为空: if [ -z $a ]
    判断整数变量a是否大于b:if [ $a -gt $b ]

    注意:
    1. “[”“]”符号的左右都留有空格
    2. “=”左右都有空格

     

    文件判断

    -e 文件已经存在
    -f 文件是普通文件
    -s 文件大小不为零
    -d 文件是一个目录
    -r 文件对当前用户可以读取
    -w 文件对当前用户可以写入
    -x 文件对当前用户可以执行

     

    for语句

    基本结构是:

    for var in [list]
    do
        #code block
    done

    其 中 $var 是循环控制变量,[list] var 需要遍历的一个集合,do/done 对包含了循环体,相当于 C 语言中的一对大括号。另外如果do for 被写在同一行,必须在do 前面加上 “;”。如: for $var in [list]; do

    ex:

    #!/bin/bash
    for day in Sun Mon Tue Wed Thu Fri Sat
    do
    echo $day
    done

    注意:1.如果列表被包含在一对双引号中,则被认为是一个元素 

    2.上面的例子中,在 for 所在那行,变量 day 是没有加 "$" 符号的,而在循环体内,echo 所在行变量$day 是必须加上 "$" 符号的

     

    while循环

    基本结构是:

    while [ condition ]
    do
    #code block
    done

    until循环

    基本结构是:

    until [ condition ]
    do
    #code block
    done

    while until的区别在于while是为真时执行,until是为假时执行

    Case语句

    BASH 中的 case 结构与 C 语言中的 switch 语句的功能比较类似,可以用于进行多项分支控制。

    case "$var" in
    condition1 )
    语句;;
    condition2 )
    语句;;
    * )
    default statments;;
    esac
    #!/bin/bash
    echo "Hit a key, then hit return."
    read Keypress
    case "$Keypress" in
    [A-Z] ) echo " Uppercase letter";;
    [a-z] ) echo " Lowercase letter";;
    [0-9] ) echo "Digit";;
    * ) echo "Punctuation, whitespace, or other";;
    esac
  • 相关阅读:
    2020-11-15日报博客-一周总结
    2020-11-13日报博客-周五
    2020-11-12日报博客-周四
    2020-11-11日报博客-周三
    掌握多态概念的关键点
    使用抽象类
    不允许继承的类
    动手实验:继承条件下的构造方法调用
    继承条件下类的访问权限
    在Java中实现继承
  • 原文地址:https://www.cnblogs.com/Caden-liu8888/p/7675110.html
Copyright © 2020-2023  润新知