shell脚本编程(学习笔记)

 shell脚本的本质
 —— shell脚本语言是解释型语言
 —— shell脚本的本质
        shell命令的有序集合
        
 shell编程的基本过程
    基本过程分为三步:
    1、建立shell文件(以.sh结尾)
    例:
        vi shell1.sh
        date
    2、赋予shell文件执行权限
        用chmod命令修改权限
            chmod 740 shell1.sh
    3、执行shell文件
        直接在命令行上调用shell程序
        ./shell1.sh
        
 shell变量
 ——shell允许用户建立变量存储数据,但不支持数据类型(整型、字符、
 浮点型),将任何赋给变量的值都解释为一串字符
    
    用户自定义变量
    —— 在shell编程中通常使用全大写变量,方便识别
        COUNT=1
    —— 变量的调用:在变量前加$
        echo $COUNT
    —— Linux Shell/bash从右向左赋值
        Y=y
        X=$Y
        echo $X
        y
    —— 使用unset命令删除变量的赋值
        Z=hello
        echo $Z
        hello
        unset Z
        echo $Z
        没有值
    
    位置变量
    —— $0    与键入的命令行一样,包含脚本文件名
    —— $#    包含命令行参数的个数
    —— $@    包含所有命令行参数
    —— $?    包含前一个命令的退出状态
    —— $*    包含所有命令行参数
    —— $$    包含正在执行进程的ID号
    
    环境变量
    可通过export或env来查看
    常见环境变量
        HOME:/ect/passwd文件中列出的用户主目录
        IFS:Internal File Separator,默认为空格,tab及换行符
        PATH:shell搜索路径
        PS1,PS2:默认提示符($)及换行提示符(>)
        TERM:终端类型,常用的有vt100,ansi,vt200,xterm等

 shell功能性语句
    shell程序由零或多条shell语句构成。shell语句包括三类:说明性语句、
    功能性语句和结构性语句。
    —— 说明性语句:
        以#号开始到结束,不被解释执行
        #!/bin/bash这句话告诉OS用那种类型的shell来解释执行该程序
    —— 功能性语句:
        任意的shell命令、用户程序或其他shell程序
    —— 结构性语句:
    条件测试语句、多路分支语句、循环语句、循环控制语句等。 
    
 read语句
 —— read var
    echo $var
    输入什么输出什么
    
 expr命令(运算符两边要有空格)
 —— 算术运算命令包括+、-、\*、/、%
    expr 12 + 5 \* 3
    27
    
 test语句(0为真)
 —— test语句可测试三种对象:
        字符串    整数    文件属性
 —— 每种测试对象都有若干测试操作符
 —— 例如:
        test "$answer" = "yes"
        变量answer的值是否为字符串yes
        test -d tmp
        测试tmp是否为一个目录名
        test $num -eq 18
        变量num的值是否为整数18
    
    字符串测试
        s1 = s2 测试两个字符串的内容是否完全一样
        s1 != s2 测试两个字符串的内容是否有差异
        -z s1  测试s1字符串的长度是否为0
        -n s1  测试s1字符串的长度是否不为0
    整数测试
        a -eq b 测试a与b是否相等
        a -ne b 测试a与b是否不相等
        a -gt b 测试a是否大于b
        a -ge b 测试a是否大于等于b
        a -lt b 测试a是否小于b
        a -le b 测试a是否小于等于b
    文件类型测试
    -d name    测试name是否为一个目录
    -e name 测试一个文件是否存在
    -f name 测试name是否为普通文件
    -L name 测试name是否为符号链接
    -r name 测试name文件是否存在且为可读
    -w name 测试name文件是否存在且为可写
    -x name 测试name文件是否存在且为可执行
    -s name 测试name文件是否存在且长度不为0
    f1 -nt f2 测试文件f1是否比文件f2更新
    f1 -ot f2 测试文件f1是否比文件f2更旧
    
 条件语句(0为真)
 if...then...fi
 语法结构
    if 表达式
            then    命令表
    fi
    ——如果表达式为真,则执行命令表中的命令;否则退出if语句,执行
    
fi后面的语句
—— if和fi是条件语句的语句括号,必须成对使用
—— 命令表中的命令可以是一条,也可以是若干条
        例:if [ -f $1 ]
            then
                echo "File $1 exists"
            fi
            
    if...then...else...fi
    语法结构:
        if    表达式
        then    命令表1
        else    命令表2
    fi
 
 多路分支语句
 case...esac
    多路分支语句case用于多重条件测试,语法结构清晰自然,其语法为:
    case    字符串变量    in
        模式1)
            命令表1
            ;;
        模式2|模式3)
            命令表2
            ;;
        ......
        模式n)
            命令表n
            ;;
    esac
    
 循环语句for
 当循环次数已知或确定时,使用for循环语句来执行一条或一组命令。
 格式为:
 for    变量名    in    单词表
        do
            命令表
        done
 变量依次取单词表中的各个单词,每取一次单词,就执行一次循环体中的
 命令,循环次数由单词表中的单词数确定。命令表中的命令可以时一条,
 也可以是由分号或换行符分开的多条。
 
 循环语句while
 语法结构:
        while 命令或表达式
            do 
                命令表
            done
        
        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值