shell
shell实质上是用户、内核和系统硬件之间的接口,是学习正确的系统管理和安全保护最关键的方面之一。
简单层面上来看,shell脚本就是对多行命令的集合,深层次上,它是Linux的基础编程工具,可为系统管理员提供简单的工具开发。类似Windows的bat批处理脚本
shell
bash脚本
编写格式:
#!/bin/bash 开头
一般以.sh 为文件扩展名
做好一定的代码注释
bash脚本的执行方法:
source方法
工作目录执行法
通配符
用于shell,用于匹配某些特定规律的文件名(简单正则)
通配符 | 含义 | 实例 |
---|---|---|
* | 匹配0或多个字符 | a*b,a和b之间可以有任意长度的任意字符包括0 |
? | 匹配任意一个字符 | a?b,a和b之间必须也只能有一个字符 |
[list] | 匹配list中任意单一字符 | a[xyz]b,a和b之间三选一 |
[!list]或[^list] | 匹配不在list中的任意单一字符 | a[!0-9]b,a和b之间不能有数字 |
[c1-c2] | 匹配c1-c2中的任意单一字符 | a[0-9]b,a和b之间有个数字 |
[!c1-c2] | 匹配不在c1-c2中的任意单一字符 | a[!0-9]b,比如acb |
{string1,string2} | 匹配string1或string2或更多其中一个的字符串 | a{123,456,789}b,a123b、a456b |
shell含义
shell接受从输入的命令,交给操作系统去执行
shell脚本命令的工作方式有两种:交互式和批处理
交互式:每输入一次命令,就立刻执行
批处理:事先编写好一个完整的shell脚本,一次性完整执行
命令是什么
是可执行程序;是shell函数——一系列方法的合集;内建于shell自身的命令。内部命令叫做buildtins,比如cd
标准输入、输出和错误
我们用到的程序都会产生输出,这些数据通常由两种类型组成
第一:程序运行的结构 STDOUT
第二:得到的状态和错误信息 STDERR
读取上一条命令执行后的状态信息命令:
1 | echo $? // 0代表执行成功 非0代表执行失败 |
命令执行结果判断
写shell脚本批处理时,需要根据上一条命令的返回结果进行一个判断。
可以通过shell中的逻辑符号进行上一条命令执行结果的判断
&&逻辑与
&&连接的命令会从前到后依次执行
只有当前面的命令成功才会执行后面的命令
||逻辑或
||连接的命令会从前到后依次执行
当前面的命令执行失败后,执行后面命令
变量
在Linux平台,变量分为:
环境变量 // shell变量
环境变量储存在/etc/profile文件中。命令行shell变量存储在~/.bashrc文件中
引用变量的方法:
在变量名前面使用$符号
当变量需要和字符串组合时,使用{ }符号。比如 ${name}blog —— zhenglinxinblog
{ }用法:
${parameter:-word}:这种变量定义的方式,当parameter空时,临时赋值word
${parameter:=word}:当parameter为空时,直接把word赋值给它。下次调用变量时也是word值
1 | #设置变量 |
脚本接受参数
命令格式:
命令 [选项] [参数]
Shell语言内置的一些变量:
$# // 总共几个参数 (空格区分)
$? // 上一个命令执行后的返回值
$* // 所有参数(一起显示)
$@ // 所有参数(一个一个显示)
$0,1,2 // 0-脚本名 1-第一个参数 2-第二个参数
if/for/while
if
1 | if 条件 |
for
1 | for i in $(seq 1 3) |
while
1 | while [ $i -le 10 ] |