第七章 shell脚本,shell变量,环境变量,位置参数变量,预定义变量,运算符,条件判断
1.shell:
shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。
2.shell脚本的执行方式:
(1)shell脚本格式要求:
脚本以#!/bin/bash开头
脚本需要有可执行权限
(2)编写一个shell脚本,输出hello world!
vim hello.sh
#!/bin/bash
echo “hello world!”
:wq
(3)脚本的常用执行方式:
方式1:(输入脚本的绝对路径或相对路径)
说明:首先要赋予helloworld.sh脚本+x权限,再执行脚本。
比如:chmod u+x 。 ./hello.sh或者使用绝对路径 /root/shcode/hello.sh
方式2:(sh+脚本)
说明:不用赋予脚本+x权限,直接执行即可。
比如:sh hello.sh。 也可以使用绝对路径。
3.shell变量:
(1)介绍:
Linux shell中的变量分为系统变量和用户自定义变量。
系统变量:$HOME,$PWD,$SHELL,$USER等待,比如:echo $HOME等等。
显示当前shell中的所有变量:set
(2)shell变量的定义:
定义变量:变量名=值
撤销变量:unset 变量
声明静态变量:readonly 变量,注意,不能unset
(3)案例:
案例1:定义变量A:A=100
输出变量需要加上$:echo A=$A或echo “A=$A”
案例2:撤销变量A:unset A
案例3:声明静态变量B=2,不能unset:readonly B=2
(4)shell变量的定义:
1.定义变量的规则:
变量名称可以由字母、数字、下划线组成,但是不能以数字开头。
等号两侧不能有空格。
变量名称一般习惯为大写。
2.将命令的返回值赋给变量:
A=`date` 反引号,运行里面的命令,并把结果返回给变量A。
A=$(date)等价于反引号。
4.设置环境变量:
(1)基本语法:
export 变量名=变量值 (功能描述:将shell变量输出为环境变量/全局变量)
soure 配置文件 (功能描述:让修改厚度配置信息立即生效)
echo $变量名 (功能描述:查询环境变量的值)
(2)注意:在输出环境变量前,需要让其生效。例如 source /ect/profile
(3)Shell脚本多行注释::<< 内容 !
5.位置参数变量:
(1)介绍:当我们执行一个shell脚本时,如果希望获取命令行的参数信息,就可以用到位置参数变量。
比如:./mysqll.sh 100 200,这个就是一个执行shell的命令行,可以在myshell脚本中获取到参数信息。
(2)基本语法:
$n(功能描述:n为参数,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10})
$*(功能描述:这个变量代表命令行中的所有参数,$*把所有参数看成一个整体)
$@(功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
$#(功能描述:这个变量代表命令行中所有参数的个数)
6.预定义变量:
(1)基本介绍:就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用。
(2)基本语法:
$$(功能描述:当前进程的进程号(PID))
$!(功能描述:后台运行的最后一个进程的进程号(pid))
$?(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正在执行;如果这个变量的值非0,则证明上一个命令执行不正确了。)
7.运算符:
(1)基本语法:
“$((运算式))”或”$[运算式]” 或者 expr m + n
注意expr运算符间要有空格,如果希望将expr的结果赋给某个变量,使用``
expr m – n
expr \* , / , % 乘、除、取余
(2)案例:
案例1:计算(2+3)*4的值
方式一:RES1=(((2+3)*4)) echo “res1=$RES1”
方式二:RES2=[(2+3)*4] echo “res2=$RES2”
方式三:TEMP=`expr 2 + 3` RES4=`expr $TEMP \* 4`
echo “temp=$TEMP” echo “res4=$RES4”
案例2:请求出命令行的两个参数[整数]的和20,50
SUM=$[$1+$2]
8.条件判断:
(1)基本语法:[ condition ](注意condition前后要有空格)
#非空返回true,可用$?验证(0位true,>1为false)
(2)案例:
[ hsp ] 返回true
[ ] 返回false
[ condition ] && echo OK || echo notok 条件满足,执行后边的语句。
(3)判断语句:
1.常用判断条件:= 字符串比较
2.两个整数的比较:
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
3.按照文件权限进行判断:
-r 有读的权限
-w 有写的权限
-x 有执行的权限
4.按照文件类型进行判断:
-f 文件存在并且是一个常规文件
-e 文件存在
-d 文件存在并且是一个目录
(4)应用案例:
案例1:”ok”是否等于”ok”。
If [ “ok” =”ok” ]
then
echo “equal”
fi
案例2:23是否大于等于22。
If [ 23 -ge 22 ]
then
echo “大于”
fi
案例3:/root/shcode/aaa.txt目录中的文件是否存在。
If [ -f /root/shcode/aaa.txt ]
then
echo “存在”
fi