shell-day01
shell脚本开发规范
1 脚本命名要有意义,文件后缀为.sh
2 脚本文件首行是必须是脚本解释器 #!/bin/bash
3 脚本解释器后面要有脚本的基本信息 脚本中尽量不要用中文注释 尽量用英文注释
4 脚本文件常见的执行方式:bash 脚本名
5 脚本内容执行:从上到下 依次执行
6 代码书写习惯: 1 成对内容的一次性写出来 2 [] 中括号两端要有空格 [ ] 3 流程控制语句一次性写完,再添加内容
7 通过缩进让代码易读(即该有空格的地方要有空格)
shell变量
变量的定义和分类: 本地变量 全局变量 shell内置变量
变量名 不变的
变量值 变化的
我们一般说的变量指的是变量名
本地变量就是:在当前系统的某个环境下才能生效的变量,作用范围小
本地变量分为:普通变量和命令变量
普通变量 : $变量名=值
shell本地变量之命令
定义方式一:变量名=
命令
注意:``是反引号
定义方式二: 变量名= ( 命 令 ) 执 行 流 程 : 1 先 执 行 ‘ 或 (命令) 执行流程: 1 先执行`或 (命令)执行流程:1先执行‘或()范围内的命令 2 在将命令执行的结果,赋值给新的变量名A
shell全局变量的查看和定义
全局变量就是:在当前系统的所有环境下都能生效的变量
env查看操作系统中所有的全局变量
export 变量名=值 定义一个全局变量
shell变量四种查看方法
方式一: 变 量 名 方 式 二 : " 变量名 方式二:" 变量名方式二:"变量名"
方式三: 变 量 名 方 式 四 : " {变量名} 方式四:" 变量名方式四:"{变量名}"==>工作中的写法
取消/删除变量
unset变量名 unset可以删除本地和全局变量
shell内置变量
bash itcast.sh bash是一个命令解释器,这个命令解释器内部定义好了很多内置变量,而这些变量可以直接拿过来使用,这些就是shell的内置变量.
本地变量和全局变量都是需要通过定义,才能实现相应功能的,shell内置变量是可以直接拿过来使用实现某种具体功能的和脚本文件相关的符号
$0 表示获取当前执行的shell脚本文件名,包括脚本路径
n 表 示 获 取 当 前 执 行 的 s h e l l 脚 本 的 第 n 个 参 数 值 , n = 1...9 , 当 n 为 0 时 表 示 脚 本 的 文 件 名 , 如 果 n 大 于 9 就 要 用 大 括 号 括 起 来 n表示获取当前执行的shell脚本的第n个参数值,n=1...9,当n为0时表示脚本的文件名,如果n大于9就要用大括号括起来 n表示获取当前执行的shell脚本的第n个参数值,n=1...9,当n为0时表示脚本的文件名,如果n大于9就要用大括号括起来{10}
$# 获取当前shell命令行中参数的总个数
$? 获取执行上一个指令的返回值(0为成功,非0为失败) 确认上条指令是否执行成功
$n 获取当前脚本传入的第n个位置的参数(n为1 或2 或3 指定位置)
字符串精确截取
格式:${变量名:起始位置:截取长度}
实例: ${file:0:5} 从第一个字符开始,截取5个字符
${file::5} 从第一个字符开始,截取5个字符
${file:5:5} 从第6个字符开始,截取5个字符
${file:5}从第6个字符开始,截取后面索引的字符
${file:0-5}从倒数第五个字符开始,截取后面所有字符
${file:0-6:3}从倒数第6个字符开始,截取之后的3个字符
shell内置变量之两种默认值
默认值的场景一: 变量a如果有内容,那么久输出a的变量值,变量a如果没有内容,那么就输出默认的内容
格式: ${变量名(a):-默认值(n)} 表示如果输入的参数为空 就输出默认的值,如果输入的参数为n,那么就输出出n的值
默认值的场景二:无论变量a是否有内容,都输出默认值
格式: ${变量名+默认值} : 即不管脚本是否有参数输入都输出默认值
shell $的含义
$0 这个程式的执行名字
$n 这个程式的第n个参数值,n=1…9
$* 这个程式的所有参数,此选项参数可超过9个。
$# 这个程式的参数个数
$$ 这个程式的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
@ 跟 @ 跟 @跟*类似,但是可以当作数组用