SHELL脚本

一、shell编程:

    常用的解释器:Bash
    编写:   #!/bin/bash 说明后面的脚本用什么程序来解释的
            # 行首以#开头的是注释
    运行:   权限:chmod +x scriptfile
            执行:bash scriptfile arg1 arg2 ...
    测试:   bash -n /path/to/scriptfile  检查语法错误,不会实际执行脚本
            bash -x /path/to/scriptfile  详细打印脚本执行过程

二、变量:

    变量分类:
        本地变量:作用域当前shell
        环境变量:作用域当前shell和其子shell。export
        局部变量:作用域函数中。local
        位置变量:$1,$2...
        特殊变量:$?取命令的状态返回值,0代表正常,大于0有误
                $0文件名
                $#参数个数
                $*所有参数,全部参数合为一个字符串
                $@所有参数,每个参数是独立的字符串
                只有被双引号引起来的时候$*、$@才有区别
                $$当前进程的ID
    显示变量:set
            export
            env
            peintenv
    删除变量:unset
    输出重定向:  
                0:标准输入
                1:标准输出
                2:标准错误
                >:是定向输出覆盖到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空
                >>:将输出内容追加到目标文件中。如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾
                >&:将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件
                |&:将一个标准错误 管道 输送 到另一个命令作为输入
                1>:标准输出
                2>:将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件
                2>>:将一个标准错误输出重定向到一个文件或设备 追加到原来的文件
                2>&1: 将一个标准错误输出重定向到标准输出 注释:1 可能就是代表 标准输出
                /dev/null黑洞
    测试表达式:[ EXPRESSION ]或[[  ]]注意前后的空格
    数值比较,前后有空格:  -gt 是否大于
                        -ge 是否大于等于
                        -eq 是否等于
                        -ne 是否不等于
                        -it 是否小于
                        -le是否小于等于
    字符串的比较,前后有空格:  == 是否等于
                            > 大于,用于[[  ]]
                            < 小于,用于[[  ]]
                            != 不等于
                            =~模式匹配,用于[[  ]],使用扩展正则表达式
                            -z 空为真,非空为假
                            -n 不空为真,空为假
    文件测试:    -e file:文件存在为真,否则为假
                -f file:是否存在且为普通文件
                -d file:是否存在且为目录文件
                -r file:是否存在可读
                -w file:是否存在且可写
                -x file:是否存在且可执行
                -s file:是否存在且非空
                file1 -nt file2:file1是否新于file2
                file1 -ot file2:file1是否旧于file2
    算数运算:    算数运算符:+、-、*、/、%、**(乘方)
                $[算术表达式]
                $((算术表达式))
                let var=算术表达式

三、数组:

    索引从0开始
    支持关联数组,索引唯一但不是数字
    显示声明:    declare -a 普通数组
                declare -A 关联数组
    元素赋值:weekdays[4]=“Thursday”
    数组初始化:array=(zero one two three four five)
    稀疏初始化:array=([0]=one [3]=three [7]="seven")
    ${array[*]}、${array[@]} 取全部元素
    ${#array[*]}、${#array[@]} 取元素个数
    ${#array[0]}、${array}取第一个元素的长度
    提取,切片:
            array=(/dev/*)
            echo ${array[*]:3}
            echo ${array[*]:186:1}
    替换:
            array=(/dev/*)
            echo ${array[*]/dev/abc}
    字符串切片:
            str=abcdef
            echo ${#str}返回长度
            echo ${str:3:1} offset偏移为3,length为1.长度不写,取到结束。offset为负数就是反向取,length为负数表示从右侧第几个。

四、语句:

    if条件语句:
            if 条件;then
                elif 条件;then
                else
            fi
    循环语句:
        while 语句:条件满足循环
            while 条件 ;do
                语句
                [break]
            done
        until语句:条件满足退出
            until 条件;do
                语句
                [break]
            done
        for语句:
            for 变量 in 列表;do
                语句
                [break]
            done
                列表生成:
                    1、{1..100}
                    2、‘seq [起始数] [跨度数] 结束数’
                    3、ls /etc 生成文件列表

五、输入重定向:<

    1、  < file 和 0<file表示从文件接收输入
             例如: grep ‘a’ file 和grep ‘a’ <file
    2、  cat > /tmp/eof <<EOF
         cat > /tmp/eof <EOF
        这是特殊代码块,用重定向的方式把命令序列传递给交互式程序或者命令中。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值