shell编程学习笔记
shell编程学习笔记
shell
shell是一个命令行解释器,它为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止甚至是编写一些程序。
shell脚本的执行方式
脚本格式要求
- 脚本以
#!/bin/bash
开头 - 脚本需要有可执行权限
脚本执行方式
直接执行具有’x’权限的脚本文件
首先赋予脚本的x(执行)权限,再执行脚本
./绝对路径
或 ./相对路径
使用指定的解释器程序
- bash hello.sh
- sh hello.sh
通过source命令或’.‘读取脚本内容执行
- source hello.sh
- .hello.sh
shell 变量
shell变量的介绍
- linux shell中的变量分为:系统变量和用户自定义变量
- 系统变量:
$HOME
,$PWD
,$SHELL
,$USER
- 显示当前shell中的所有变量:set
shell变量的定义
基本语法
- 定义变量:变量名=值(中间不能有空格)
- 撤销变量:unset 变量
- 声明静态变量:readonly 变量,注意:不能unset
定义变量的规则
- 变量名称可以由字母、数字和下划线组成,但不能以数字开头
- 等号两侧不能有空格
- 变量名称一般习惯大写
设置环境变量(全局变量)
基本语法
将shell变量输出位环境变量/全局变量
export 变量名=变量值
让修改后的配置信息立即生效
source 配置文件
查询环境变量的值
echo $变量名
位置参数变量
得到命令行的参数信息
基本语法
$n
:n为数字,$0
代表命令本身,$1-$9
代表第一到第九个参数,十以上的参数需要用大括号包含,如:${10}
$*
:代表命令行中所有的参数,把所有的参数看成一个整体$@
:代表命令行中所有的参数,把每个参数区别对待$#
:命令行中所有参数的个数
预定义变量
shell设计者事先定义好的变量,可以直接在shell脚本中使用
基本语法
$$
:当前进程的进程号(PID)$!
:后台运行的最后一个进程的进程号(PID)$?
:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令的正确执行;如果这个变量的值为非0,则证明上一个命令执行不正确。
运算符
"$((运算式))"
或"$[运算式]"
- expr m + n (运算符之间要有空格)
- 如果希望将expr的结果赋给某个变量,使用``(反引号)
条件判断
判断语句
基本语法
if [ condition ] (condition 前后要有空格)
非空返回true
判断语句
常用的判断条件
字符串比较
=
: 字符串比较
两个整数的比较
-lt
:小于-le
:小于灯与-eq
:等于-gt
:大于-ge
:大于等于-ne
:不等于
按照文件权限进行判断
r
:有读的权限w
:有写的权限x
:有执行的权限
按照文件类型进行判断
-f
:文件存在并且是一个常规文件-e
:文件存在-d
:文件存在且是一个目录
流程控制
if 判断
基本语法
1 | if [ 条件判断式 ] |
多分支
1 | if [ 条件判断式 ] |
case 语句
基本语法
1 | case $变量名 in |
for 循环
基本语法1
1 | for 变量 in 值1 值2 值3... |
基本语法2
1 | for((初始值;循环控制条件;变量变化)) |
while 循环
基本语法1
1 | while [ 条件判断式 ] |
read —- 读取控制台输入
基本语法
read (选项) (参数)
选项
-p
:执行读取值时的提示符-t
:指定读取值时等待时间(秒),如果没有在指定的时间内输入,就不再等待
参数
便令: 指定读取值的变量名