命令的组合:

1. 多个命令的顺序分隔:
     1. 顺序分隔,使用 ; 顺序执行;
     2. 逻辑与分隔, 使用 && ,  一旦前面的命令执行失败,后面的命令就不会执行;
     3. 逻辑或分隔, 使用 || ,  一旦前面的命令执行失败,后面的命令才会执行;
    一个很有用的组合逻辑分隔:命令1 && 命令2 || 命令3: 当命令1成功时会执行命令2, 当命令1失败时,会执行命令3;

重定向:

类型  设备文件 文件描述号 默认设备
标准输入 /dev/stdin 0 键盘
标准输出 /dev/stdout 1 显示器
标准错误输出  /dev/stderr 2 显示器

什么是重定向?重新指定命令执行时的I/O设备的方向, 不再使用默认的键盘和显示器, 改用指定的文本文件;

类型        操作符        用途
    重定向输入    <        输入源来自指定的文件;
    重定向输出    >        输出到指定的文件(覆盖)
            >>        与> 类似,它是追加;
    重定向错误    2>        输出错误信息到指定的文件;
            2>>         与上面类似,它是追加;
    混合重定向    &>        所有的输出,相当于 >和2>

变量值

当使用双引号括起变量时,  1)在内部可以使用$扩展变量值 2)可以使用\转义 3) 没有空格或Tab时,可以省略双引号;
    当使用单引号括起变量时,  把内部所以字符视为变量本身, 并不能有转义;

读入变量值:
    read 取值的用法: read 变量名 或 read -p "提示信息“ 变量名 或 加上 -s 选项(输入的值不显示在屏幕上)

变量的作用范围:
    1. 局部变量,在当前的shell中有效;
    2. 全局变量, 在当前shell和子shell中有效; 使用export 变量名[=变量名]发布全局变量, 使用 export -n 变量名取消全局变量;

变量:
    引用变量:使用$变量名 或 ${变量名}
    取消变量: unset 变量名   
常见的预定义变量:
    $0: 当前所在进程或脚本名
    $$: 当前运行进程的PID号
    $?: 命令执行之后返回的状态值,0表示正常, 1或其它表示异常
    $#: 已加载的位置的变量的个数
    $*: 所有的位置的变量的值

数值运算:

常见运算:加法: num1 + num2

减法: num1 - num2

乘法: num1 * num2

除法: num1 / num2

取余: num1 % num2

两种实现方法:

1. 使用expr工具, 使用方法:  expr 1 + 2       注意:1)运算符之间需要有空格 2) 乘号需要转义,即/*  3)变量名不可以省略$

2. 使用$[ ]表达式 使用方法:  $[1+2]           注意:1)可以不需要空格 2)乘号不需要转义 3)变量名可以省略$  4)用**表示乘方运算;

使用let 命令操作变量:

实现自增/自减/自乘/自除   例如:x=2; let x+=2

随机整数变量:

RANDOM,产生0~32767之间的整数;     如:echo $RANDOM

生成一列整数:

seq 命令: 默认从1开始,步长为1

用法: seq 末尾数 或 seq 开始数 末尾数  或 seq 开始数 步长 末尾数

使用 -s "分隔符" 可以自定义分隔符, 默认为/n

shell中使用小数:

使用bc计算器,linux基本都默认安装, 使用quit 退出; 它可以结合管道符使用;

shell中常用的条件测试

1. 判断一条命令是否执行成功?查看返回状态值$?, 如果为0表示成功,否则失败;
    2. 使用test检测文件状态:
        使用方法: 1)test 选项 文件或目录   2)[ 选项 文件或目录 ]
        常用到的测试选项:
            -e 检测对象是否存在,存在则为真;
            -d 检测对象是否是目录;
            -f 检测对象是否是一般文件;
            -r 检测对象是否有可读权限;
            -w 检测对象是否有可写权限;
            -x 检测对象是否有可执行权限;
    3. 使用test 比较整数值:
        使用方法: 1)test 整数值1 选项 整数値2    2)[ 整数值1 选项 整数値2 ]
        常用到的选项:
            -eq 等于(equal)
            -ne 不等于(not equal)
            -ge 大于或等于(greater or equal)
            -le 小于或等于(lesser or equal)
            -gt 大于(greater than)
            -lt 小于(lesser than)
        组合多个条件:
            方法1. test 测试条件1 -a或-o 测试条件2…… ,  其中-a 表示并, -o 表示或;
            方法2. [[ 测试条件1 &&或|| 测试条件2…… ]]
    4. test 比较字符串
        使用方法: [ 字符串1 选项 字符串 ]  或 [ 选项 字符串 ]
        常用选项:
            =  两个字符串相同
            != 两个字符串不相同
            -z 字符串是否为空
            -n 字符串的值不为空
    5. 条件取反
        使用方法: [ ! 测试条件 ]

字符串处理:

1. expr substr 字符串 起始位置 截取长度   作用:截取字符串中的一定的长度;
    2. cut 命令:
        用法: 1. cut -c 起始位置-结束位置 文件名    (默认开始位置为1)
            2. cut -d ‘分隔符‘ -f 字段编号 文件名
            3. cut 也可以配合管道符使用
    3. 使用${}表达式
        截取用法: ${变量名:起始位置:截取长度}   (默认的开始位置为0)
        替换用法: ${变量名/old/new}   只替换第一个出现的;
               ${变量名//old/new}  替换字符串的所有;
    4. 单字替换工具tr
        替换: 命令输出 | tr 'abc' 'ABC'       //把字符a,b,c换为A,B,C,而不是把 abc 换为 ABC
        删除: 命令输出 | tr -d 'ac'           //删除其中的字符a 和 c
    5. 获取文件的路径名与文件名
        获取路径名: dirname "字符串“
        获取文件名: basename "字符串”
    6. 提取命令的输出:
        方法:1. 使用反引号   `可执行命令`
              2. 使用$()      $(可执行命令)          //它方便命令的嵌套

看视频 shell入门视频补充的 shell脚本基本知识(TMD有点乱)的更多相关文章

  1. Asp.NET Core2.0 项目实战入门视频课程_完整版

    END OR START? 看到这个标题,你开不开心,激不激动呢? 没错,.net core的入门课程已经完毕了.52ABP.School项目从11月19日,第一章视频的试录制,到今天完整版出炉,离不 ...

  2. Linux入门视频

    为了方便新手学习Linux,本人专门录制了以下Linux初级视频方便学习,本系列多媒体教程已完成的博文: 轻松学习Linux之入门篇 http://chenguang.blog.51cto.com/3 ...

  3. Shell入门

    前言 日常用Python多一些,不过很多时候shell脚本更简单实用一些,所以有必要熟悉一下shell脚本.当然shell有他特定的一些场景,比方说我曾经改过一个vpn断线自动重连的脚本,简单实用. ...

  4. jsf2入门视频 教程

    jsf2.0 入门视频 教程   需要的看下.初次录视频.还有很多需要完善. JSF交流QQ群84376982 JSF入门视频下载地址  http://pan.baidu.com/s/1jG3y4T4 ...

  5. 练Focus T25必看!T25课表 视频与成功案例汇总

    练Focus T25必看!T25课表 视频与成功案例汇总! [复制链接]  http://jianfei.39.net/thread-3645799-1.html     小西i减肥         ...

  6. Shell入门02

    Shell入门-02 1.重定向 标准输入(<) 标准输出 标准错误重回定向 程序 = 指令 + 数据 命令   变量 在程序中,数据如何输入?又如何输出? 数据输入:键盘 – 标准输入,但是并 ...

  7. Shell入门01

    Shell入门 1.基于硬件的虚拟化 2.基于平台的虚拟化 3.基于服务的虚拟化 4.基于库的虚拟化 5.基于操作系统的虚拟化 管理员使用Shell程序与操作系统进行交互,之前学习的shell脚本都是 ...

  8. 10_Linux基础-SHELL入门1

    @ 目录 10_Linux基础-SHELL入门1 一. 输入输出重定向 二. 2个特殊文件 三. here document 四. tee命令 五. 清空文件内容 六. SHELL入门 SHELL的变 ...

  9. 【重点】Shell入门教程:流程控制(2)条件判断的写法

    第三节:条件判断的写法 if条件判断中,if的语法结构中的“条件判断”可以有多种形式.测试结果是真是假,就看其传回的值是否为0. 条件测试的写法,有以下10种: 1.执行某个命令的结果 这里的命令,可 ...

随机推荐

  1. 最NB的发现 LINUX 下玩teamviewer 命令行设置密码

    cd /opt/teamviewer/tv_bin/ [root@666 tv_bin]# ls desktop script teamviewerd TVGuiSlave.32 xdg-utils ...

  2. 定义log_query_time的值

    默认超过10秒的sql才会被记录在慢查询日志里.可以通过long_query_time控制.如果是临时修改:set global long_query_time=4;(把超过4秒的sql记录到慢查询日 ...

  3. android笔记---百度地图api应用 (一)

    package com.example.bdtest; import com.baidu.mapapi.MKEvent; import com.baidu.mapapi.MKPlanNode; imp ...

  4. ossec变更alert等级及配置邮件预警

    一.场景 当攻击者尝试使用字典对某一台主机的sshd服务进行暴力破解的时候,如果我们能第一时间受到攻击预警的邮件的话,对安全人员或者运维人员来说都能做出快速响应.而使用ossec恰巧可以完成这一工作, ...

  5. 【驱动】input子系统全面分析

    初识linux输入子系统 linux输入子系统(linux input subsystem)从上到下由三层实现,分别为:输入子系统事件处理层(EventHandler).输入子系统核心层(InputC ...

  6. RTX——第19章 SVC 中断方式调用用户函数(后期补历程)

    以下内容转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解如何采用 SVC 中断方式调用用户函数. 当用户将 RTX 任务设置为工作在非特权级模式 ...

  7. 秒杀怎么样才可以防止超卖?基于mysql的事务和锁实现

    Reference:  http://blog.ruaby.com/?p=256 并发事务处理带来的问题? 相对于串行处理来说,并发事务处理能大大增加数据库资源的利用率,提高数据库系统的事务吞吐量,从 ...

  8. js上传文件带参数,并且,返回给前台文件路径,解析上传的xml文件,存储到数据库中

    ajaxfileupload.js jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId ...

  9. C# 执行bat批处理文件

    private void RunBat(string batPath) { Process pro = new Process(); FileInfo file = new FileInfo(batP ...

  10. sparkonhbase

    import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.client.Result impor ...