看视频 shell入门视频补充的 shell脚本基本知识(TMD有点乱)
命令的组合:
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有点乱)的更多相关文章
- Asp.NET Core2.0 项目实战入门视频课程_完整版
END OR START? 看到这个标题,你开不开心,激不激动呢? 没错,.net core的入门课程已经完毕了.52ABP.School项目从11月19日,第一章视频的试录制,到今天完整版出炉,离不 ...
- Linux入门视频
为了方便新手学习Linux,本人专门录制了以下Linux初级视频方便学习,本系列多媒体教程已完成的博文: 轻松学习Linux之入门篇 http://chenguang.blog.51cto.com/3 ...
- Shell入门
前言 日常用Python多一些,不过很多时候shell脚本更简单实用一些,所以有必要熟悉一下shell脚本.当然shell有他特定的一些场景,比方说我曾经改过一个vpn断线自动重连的脚本,简单实用. ...
- jsf2入门视频 教程
jsf2.0 入门视频 教程 需要的看下.初次录视频.还有很多需要完善. JSF交流QQ群84376982 JSF入门视频下载地址 http://pan.baidu.com/s/1jG3y4T4 ...
- 练Focus T25必看!T25课表 视频与成功案例汇总
练Focus T25必看!T25课表 视频与成功案例汇总! [复制链接] http://jianfei.39.net/thread-3645799-1.html 小西i减肥 ...
- Shell入门02
Shell入门-02 1.重定向 标准输入(<) 标准输出 标准错误重回定向 程序 = 指令 + 数据 命令 变量 在程序中,数据如何输入?又如何输出? 数据输入:键盘 – 标准输入,但是并 ...
- Shell入门01
Shell入门 1.基于硬件的虚拟化 2.基于平台的虚拟化 3.基于服务的虚拟化 4.基于库的虚拟化 5.基于操作系统的虚拟化 管理员使用Shell程序与操作系统进行交互,之前学习的shell脚本都是 ...
- 10_Linux基础-SHELL入门1
@ 目录 10_Linux基础-SHELL入门1 一. 输入输出重定向 二. 2个特殊文件 三. here document 四. tee命令 五. 清空文件内容 六. SHELL入门 SHELL的变 ...
- 【重点】Shell入门教程:流程控制(2)条件判断的写法
第三节:条件判断的写法 if条件判断中,if的语法结构中的“条件判断”可以有多种形式.测试结果是真是假,就看其传回的值是否为0. 条件测试的写法,有以下10种: 1.执行某个命令的结果 这里的命令,可 ...
随机推荐
- zabbix rpm 安装 新增zabbix yum 源 并更新
需要安装的包: # rpm -qa|grep zabbix zabbix-server-2.4.3-1.el6.x86_64 zabbix-web-mysql-2.4.3-1.el6.noarch z ...
- .NET MVC下的日志文件生成法
/// <summary> /// 写日志文件 /// </summary> /// <param name="Infos">日志内容</ ...
- c#,asp.net 开发 app 学习资料整理
VS2015 Apache Cordova第一个Android和IOS应用 http://www.cnblogs.com/aehyok/p/4116410.html PhoneGap:免费开源的 HT ...
- c++ primer读书笔记之c++11(三)
1 =default构造函数限定符 c++11针对构造函数提供了=default限定符,可以用于显式指定编译器自动生成特定的构造函数.析构或赋值运算函数.参考代码如下: class CtorDftTy ...
- 【Linux】利用Xvfb关闭chrome的图形化输出
利用Xvfb关闭chrome的图形化输出 #!/bin/bash . /home/fzuir/.profile # JAVA export JAVA_HOME=/usr/local/jdk1.7.0_ ...
- 确保安全的HTTPS(对HTTP加密的几种技术,前端面试常问)第一篇
HTTP固然足够好,但是在安全方面有着很大隐患: 1.与服务器进行通信使用的是明文,内容可能会被窃听(HTTP协议本身并不具备加密功能,所以无法对请求和响应的内容进行加密) 2.使用HTTP协议的服务 ...
- JAVA-JSP内置对象之exception对象用来处理错误异常
相关资料:<21天学通Java Web开发> exception对象1.exception对象用来处理错误异常.2.如果要使用exception对象,必须指定page中的isErrorPa ...
- 词袋模型bow和词向量模型word2vec
在自然语言处理和文本分析的问题中,词袋(Bag of Words, BOW)和词向量(Word Embedding)是两种最常用的模型.更准确地说,词向量只能表征单个词,如果要表示文本,需要做一些额外 ...
- 如何让docker以daemon方式运行/bin/bash
本文转自:https://segmentfault.com/q/1010000000424935 问题: 我想在docker run的时候,用-d参数运行/bin/bash,然后让这个bash一直跑着 ...
- org.apache.hadoop.hbase.MasterNotRunningException解决策略
执行HBase时常会遇到个错误,我就有这种经历. ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times 检 ...