SH编程

什么是Shell?
简单地讲,就是命令解析器,将用户输入的指令转换为相应的机器能够运行的程序。

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


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

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

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

变量
在shell编程中,所有的变量都由字符串组成,并且不需要预先对变量进行声明,例s1:
              #!/bin/sh
              #set variable a
              a="hello world"
              # print a
              echo "A is:"

              echo $a

有时候变量名很容易与其他文字混淆,比如:
              S13:
              num=2

              echo "this is the $numnd“

这并不会打印出"this is the 2nd",而仅仅打印"this is the ",因为shell会去搜索变量numnd的值,但是这个变量时没有值的。可以         使用花括号来告诉shell我们要打印的是num变量:

              num=2
              echo "this is the ${num}nd"

             这将打印: this is the 2nd


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

局部变量
在变量首次被赋值时加上local 关键字可以声明一个局部变量,例s3:
        #!/bin/bash
        hello="var1"
        echo $hello

        function func1 {

                local hello ="var2"
                echo $hello
        }
        func1
        echo $hello

If语句
   1.  if [ expression ]
        then
                #code block
        fi


   2.  if [ expression ]

        then
                #code block
        else
                #code block
        fi

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

    4. 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 ]

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

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

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

        done

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

        #!/bin/bash
        for day in "Sun Mon Tue Wed Thu Fri Sat“
        do
                echo $day
        done
        上面的例子中,在for 所在那行,变量day 是没有加"$" 符号的,而在循环体内,echo 所在行变量$day 是必须加上"$" 符号的。

while循环
        while 循环的基本结构是:
        while [ condition ]
        do
                #code block
        done

until循环
        until 循环的基本结构是:
        until [ condition ]
        do
                #code block
        done
        while 和until的区别在于while是为真时执行,until是为假时执行

Case语句
        BASH 中的case 结构与C 语言中的switch 语句的功能比较类似,可以用于进行多项分支控制。
        case "$var" in
                condition1 )
                        ;;
                condition2 )
                        ;;
                * )
                default statments;;

        esac        


        S12:
        #!/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


                                               -------转自《成都国嵌视频培训资料》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值