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
2
3
4
5
6
7
8
9
10
11
#设置变量
[root]echo $name
(空白)
[root]name=zhenglinxin
[root]echo $name
zhenglinxin

#取消变量
[root]unset name
[root]echo $name
(空白)

脚本接受参数

命令格式:

命令 [选项] [参数]

Shell语言内置的一些变量:

$# // 总共几个参数 (空格区分)
$? // 上一个命令执行后的返回值
$* // 所有参数(一起显示)
$@ // 所有参数(一个一个显示)
$0,1,2 // 0-脚本名 1-第一个参数 2-第二个参数

if/for/while

if

1
2
3
if 条件
then 条件通过后执行操作
fi

for

1
2
3
4
for i in $(seq 1 3)
do
echo $i
done

while

1
2
3
4
5
while [ $i -le 10 ]
do
echo $i
let ++i
done