- shell 在Linux系统管理领域里面是最棒的编程语言
- 单行注释:除了首行的#号不是注释外,其他所有行内容,只要首个字符是#,那么就表示该行是注释
- 多行注释:
- 两种方法::<<!...!和:<<字符...字符
- 脚本执行的三种方法:
- 1./bin/bash 脚本名
-
- ./脚本名(需要添加执行权限)
- 3.source 脚本文件 或 . 脚本文件
- 脚本规范:
- 1.脚本命名要有意义,文件后缀名是.sh
- 2.脚本文件首行必须是解释器#! /bin/bash
- 3.脚本文件解释器后面要有脚本的基本信息等内容。
- 4.注释内容尽量不要用中文
- 5.脚本内容执行是按从上到下,依次执行
- 6.流程控制语句一次性写完,再添加内容
- 7.通过缩进让代码易读。
- 环境变量:提升文件编辑的效率
- 变量名=变量值
- 变量名的定义:
- 自己文件里面用的 字母_字母
- 系统级别的 大写字母_大写字母
- 变量类型分为:系统级别,本地级别,bash内置级别
- 普通变量样式:name=value,name='value',name="value"
- 变量值内含特殊符号,需要使用单双引号
- 变量值使用单引号会原封不动的输出
- 变量值使用双引号先解析变量,再匹配整体
- 变量输出样式:$name,"$name",${name},"${name}"
- 命令变量:name=$(cmd),name=
cmd
- 全局环境变量定义:export name=value(一步完成)
- 删除环境变量:unset name
- 批量删除环境变量:重启终端会话
- 作用范围
- 系统级别 /etc/profile /etc/profile.d/xxx.sh
- 用户级别 /etc/bashrc ~/.bashrc ~/.bash_profile
- 终端级别
- 文件级别
- 代码级别
- 系统级别的环境变量作用于多终端多用户
- 当前父shell中定义变量分为局部变量和全局变量,不同点是:局部变量只能作用于父shell,子shell无法继续使用;如果使用了export将局部变量升级为全局变量,那么子shell创建的时候会继承父shell的全局变量。
- 普通环境变量:在文件里面,可以被独立的函数来使用,在函数里面可以通过local关键字限定,这个普通的环境变量作用范围仅限于函数里面。
- 脚本相关的变量解析
- $0 获取当前执行文件的shell脚本文件名
- $n 获取当前执行的shell脚本的第n个参数值,当n为0时表示文件名;当n大于9就要用大括号括起来$
- $# 获取当前shell命令中参数的总个数
- $? 获取执行上一个指令的返回值(0是成功,1是失败)
- $$ 是脚本运行的当前进程的ID号,作用是方便以后管理它杀掉进程
- $! 前一条命令进程的ID号,作用是方便杀掉他
- 内置变量
- $0 $# $num $? ${#file} $
- 表达式
- 运算符 + - * / %
- 赋值 = *= /= += -= ++ --
- 测试 test、 [ 表达式 ]、 0代表表达式成立、1代表表达式失败
- 逻辑 && 、 ||、!
- 文件 -f -d -x
- 数字 -eq -ne -ge -gt -le -lt
- 字符串 == != -n -z
- 多条件
- [ 条件1 -a 条件2 ] [ 条件1 -o 条件2 ]
- [[ 条件1 && 条件2 ]] [[ 条件1 || 条件2 ]]
- shell里面的数组就是列表
- 一维数组,按照顺序将一系列数据排列下来即可。
- 数组的表现样式:数组[下标] #下标就是索引
- 使用场景:编程语言中基于数据的查询,聚合等操作
- 数组的定义:数组名=(a b c d e f );数组名[下标]
- 数组的查看:${array_name[index]};$
- 表达式文件属性判断
- -d 检查文件是否存在且为目录文件
- -f 检查文件是否存在且为普通文件
- -x 检查文件是否存在且为可执行权限
- 数值比较,如大于,小于,等于两者之间的关系
- n1 -eq n2(相等) n1 -ne n2(不等于) n1 -ge n2(大于等于) n1 -gt n2(大于) n1 -lt n2(小于) n1 -le n2(小于等于)
- 条件判断
- 单分支if: if 条件;then 命令;fi
- 双分支if: if 条件;then 命令;else 命令;fi
- 多分支if: if 条件;then 命令;elif 条件;then 命令;。。。;else 命令;fi
- case语句:
- case 变量名 in
- “xxx”)
- 命令;;
- *)
- 命令;;
- esac
posted @
2026-04-19 21:28
kevin-579
阅读(
18)
评论()
收藏
举报