shell:命令解释器
shell位于操作系统和应用程序之间,解释对应命令至对应位置
分类:
- 图形化界面:桌面
- 命令行
编写与执行
#! /bin/bash
/bin/bash filename.sh
# 不需要有可执行权限,建议文件路径写完整
bash /bin/bash script_name 或 /bin/bash /root/script_name
# 脚本需要有可执行权限
/bin/bash script_name 或 ./script_name
# 当前环境下执行
source script_name 或 . script_name
注释
除第一行外,其他使用#
多行注释:
:<<!
多行注释
!
# !可以替换为@?abc等
变量
- 普通变量:
a = 值
# 值为整体,无特殊符号a = '值'
# 看到什么输出什么,不解析值范围可解析内容a = "值"
# 如果值范围有可解析内容,优先执行
- 命令变量
a = `命令`
a = $(命令)
# 先获取命令值
- 全局变量
env
显示全局变量a = 值
# 设置普通变量为全局变量 export aexport a=值
- 查看和取消
$变量名
"$变量名"
${变量名}
"${变量名}"
# 取消 unset 变量名
- 内置变量
$0
获取当前执行shell文件名称$n
(1…9) 获取命令行参数$#
获取命令行中参数的总个数$?
获取上一个指令的返回值(0为成功,非0为失败)
字符串截取
${变量名:起始位置:截取长度}
file = 112lkjlj234234
${file:0:5}
从第一个字符开始,截取5个字符(0可以省略)
${file:0-6:3}
从倒数第6个字符开始,截取之后的3个字符
获取默认值
${变量名:-默认值}
如果变量有值,则取变量值,没有则取默认值
${变量名:+默认值}
无论变量是否有值,强制使用默认值
测试语句
条件成立,返回0,不成立,返回1
test 条件表达式
[ 条件表达式 ]
文件表达式
-f
判断后边输入的是否是一个文件[ -f file.sh ]
-d
判断输入是否是一个目录[ -d Desktop ]
-x
判断输入是否有执行权限[ -x file.sh ]
数值操作符
-eq
等于 -gt
大于 -lt
小于 -ne
不等于
字符串比较
== !=
计算表达式
- $(( 计算表达式 )) 只能用+-*/和()运算符(包含调用变量),并且只能用于整数运算
- let 计算表达式
重定向符号
>
覆盖方式写入
>>
追加方式写入
后台展示符号
&
追加此符号可使程序后台运行
fg
调出后台程序(T挂起状态)