一. 变量

变量类型

1. 自定义变量

定义变量: 变量名=变量值, 区分大小写

引用变量: $变量名 或 ${变量名}

查看变量: echo $变量名 set(所有变量: 包括自定义变量和环境变量)

取消变量: unset 变量名

作用范围: 仅在当前shell中有效

2. 环境变量

定义环境变量: 方法一 export 变量名=变量值

​ 方法二export 变量名, 将自定义变量转换为环境变量

引用环境变量: $变量名 或 ${变量名}

查看环境变量: echo $变量名 env

取消环境变量: unset 变量名

变量作用范围: 当前shell和子shell有效

扩展

静态变量: redonly 变量名=变量值

声明静态变量:readonly 变量,注意:不能 unset

3. 位置变量

$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}

4. 预定义变量

变量 意义
$0 脚本名
$* 所有参数
[email protected] 所有参数
$# 参数的个数
$$ 当前进程的PID
$! 上一个后台进程的PID
$? 上一个命令的返回值, 0表示成功, 其他均为失败

Linux Shell Study

变量赋值方式

1. 显式赋值

变量名=变量值

ip=1.1.1.1

school="zhong guo"

today=`date+%F` 这句话时将date+%F这条命令的执行结果赋值给today

today=$(date+%F) 这句话时将date+%F这条命令的执行结果赋值给today

2. 键盘读入

read 变量名

read -p “提示信息” 变量名 在键盘录入的时候显示提示信息

read -t 5 -p “提示信息” 变量名 -t 5 代表等待五秒钟, 超时不候

read -n 2 变量名 -n 2 表示输入两个字符

引用变量注意

" " 弱引用 里面可以加变量

’ ’ 强引用 一切皆为字符串

` ` 命令替换 命令会被先执行

$() 命令替换 命令会被先执行

变量的运算

1. 整数运算

Linux Shell Study

2. 小数运算

小数运算要加scale值, 来保留小数的位数

echo “scale=2;6/4” |bc 用scale保留小数位

awk ‘BEGIN{print 1/2}’ 用awk命令运算

echo “print 5.0/2” |python 用python运算

变量内容替换和删除

1. 内容删除

Linux Shell Study
Linux Shell Study

2. 内容替换

Linux Shell Study

3. 变量替代

Linux Shell Study

总结

格式 符号 说明
${var-string} - 只替换没有定义的变量
${var:-string} :- 替换没有定义和是空值的变量
${var+string} + 不替换没有定义的变量
${var:+string} :+ 仅替换有值的变量
${var=string} = 不替换空值的变量
${var:=string} := 不替换有值的变量
${var?string} ? 未定义变量抛出异常
${var:?string} :? 未定义变量和空值均抛出异常

二. 条件测试

格式1: test条件表达式

格式2: [ 条件表达式]

格式3: [[ 条件表达式 ]]

"[" 是一个命令, 空格和参数隔开

文件测试

操作符 说明
-e file 文件是否存在
-d file 是否为目录
-f file 是否为文件
-b file 是否为设备文件
-c file 是否为字符设备文件
-r file 是否可读
-w file 是否可写
-x file 是否可执行
-L file 是否是链接文件
-s file 是否为空 空返回false

数值比较

操作符 说明
-gt 大于
-lt 小于
-eq 等于
-ne 不等于
-ge 大于等于
-le 小于等于

Linux Shell Study

字符串比较

字符串定义时务必加双引号

[ -z “$var”] 字符串长度是为0

[ -n “$var”] 字符串长度不为0

字符串比较用"="

Linux Shell Study

Linux Shell Study

Linux Shell Study

Linux Shell Study
Linux Shell Study

脚本执行调试

执行

./01.sh 需要执行权限, 在子shell中执行

bash 01.sh 不需要执行权限, 在子shell中执行

. 01.sh 不需要执行权限, 在当前shell中执行

source 01.sh 不需要执行权限, 在当前shell中执行

调试

sh -n 02.sh 仅调试, 检测错误

sh -vx 02.sh 以调试的方式执行, 查询整个执行过程

Linux Shell Study

相关文章: