每天都得进步,哪怕是一点!
文章目录
- 一.shell基本介绍
- 1.基本介绍
- 2.shell脚本的执行要求
- 3.脚本的常用执行方式
- 二.shell变量
- 1.基本介绍
- 2.shell变量的定义和撤销
- 3.定义变量的规则
- 4.将命令的结果赋值给变量
- 5.设置环境变量
- 7.位置参数变量
- 8.预定义变量
- 9.shell中的运算符
- 三.流程控制-条件控制
- 1.条件判断基本语法
- 2.常用的条件判断 `重点`
- 2.1.字符串比较
- 2.2.两个整数的比较
- 2.3.按照文件权限进行判断
- 2.4.按照文件类型进行判断
- 2.5.基本案例
- 3.if判断语句
- 3.1.基本语法
- 3.2.基本案例
- 4.case判断语句
- 4.1.基本语法
- 4.1.基本案例
- 四.流程控制-循环控制
- 1.for循环
- 1.1.for循环基本语法1
- 1.2.语法1的基本案例
- 2.1.for循环基本语法2
- 2.2.语法2的基本案例
- 2.while循环
- 2.1.while基本语法
- 2.1.while基本案例
- 五.read读取控制台输入
- 1.基本语法
- 1.基本案例
- 五.shell函数基础
- 5.1.常用系统函数
- 5.2.自定义函数基本语法
- 5.3.函数入门案例
一.shell基本介绍
1.基本介绍
shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求的以便运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止甚至是编写一些程序
2.shell脚本的执行要求
①脚本以#!/bin/bash开头 【使用bash进行解释】
②脚本需要有可执行权限
3.脚本的常用执行方式
①添加可执行权限,直接运行
②没有可执行权限,sh+脚本名【也可执行】
二.shell变量
1.基本介绍
①Linux shell中的变量分为系统变量和用户自定义变量
②常用的系统变量有:$HOME $PWD $SHELL $USER 等
③命令行中使用 set
可以查看当前shell中所有的变量
2.shell变量的定义和撤销
①定义变量:变量名=值 【注意:声明变量时,等号两边不能有空格
】
②撤销变量:unset 变量名
③声明静态变量:readonly 变量 【注意:静态变量不能unset
】
3.定义变量的规则
①变量名称可以有字母,数字,下划线组成。不能以数字开头
②定义变量时,等号两边不能有空格
③变量名称一般为大写
4.将命令的结果赋值给变量
①A=`ls -la` 【反引号】 运行里面的命令,并把结果返回给变量A
②A=$(ls -la) $符号等价于反引号
5.设置环境变量
①export 变量名=变量值 【让shell变量输出为环境变量】
②source 配置文件 【让修改后的环境变量立即生效】
③echo $变量名 【查询环境变量的值】
6.代码注释
①单行注释 #
②多行注释
:<<!
内容
内容
!
7.位置参数变量
当我们执行一个shell脚本时,如果希望获取命令行的参数信息,就可以使用位置参数变量,比如:./myShell.sh 100 200,这个就是一个执行shell的命令行,可以在myShell脚本中获取到参数信息
变量 | 说明 |
---|---|
$n | n为数字,$0代表命令本身,$1-$9代表一个到第九个参数,十个或十个以上的的参数需要使用大括${10} |
$* | 功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体 |
$@ | 功能描述:这个变量也代表命令行中所有的参数,$@把每个参数区分对待 |
$# | 功能描述:这个变量代表命令行中所有参数的个数 |
8.预定义变量
就是shell设计者事先已经定义好的变量,可以直接再shell脚本中使用
变量 | 说明 |
---|---|
$$ | 当前进程的进程号(PID) |
$! | 后台运行的最后一个进程的进程号(PID) |
$? | 最后一次执行的命令的返回状态,如果返回0,就代表该命令正确执行,非0就代表不正确执行 |
9.shell中的运算符
①$((运算式)) 或者 $[运算式]
②`expr m + n` 注意:需要用反引号引起来,运算符两边需要有空格
③* 注意乘号需要使用转义符号 \,其他符号正常使用
#!/bin/bash
#计算A加B的值
A=100
B=200
#方式一
echo "A+B= $(($A+$B))"
#方式二
echo "A+B= $[$A+$B]"
#方式三
echo "A+B= `expr $A + $B`"
#*乘号需要使用转义符
echo "A+B= `expr $A \* $B`"
执行脚本
三.流程控制-条件控制
1.条件判断基本语法
①[ condition ] 注意condition前后需要有空格
②非空返回true,可以使用$?
验证,0为true,>1为false
③应用实例
[ hello ] 返回true
[] 返回false
④三元表达式:
[ condition ] && echo ok || echo nook
说明:条件判断为真输出ok,为假输出nook
2.常用的条件判断 重点
2.1.字符串比较
= 等于
2.2.两个整数的比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
2.3.按照文件权限进行判断
-r 可读
-w 可写
-x 可执行
2.4.按照文件类型进行判断
-f 文件存在并且是一个常规的文件
-e 文件存在
-d 文件存在并且是一个目录
2.5.基本案例
#!/bin/bash
#案例一:判断"ok" 是否等于 "ok"
if [ "ok" = "ok" ]
then
echo "相等equal"
fi
#案例二:判断 23 是否大于 22
if [ 23 -ge 22 ]
then
echo "23 大于 22"
fi
#案例三:判断当前目录下是否存在aaa.txt文件
if [ -e ./aaa.txt ]
then
echo "存在"
fi
3.if判断语句
3.1.基本语法
注意:[ 条件判断式 ] 中两边都有空格
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
fi
3.2.基本案例
#!/bin/bash
#成绩通过位置参数获取
#输出成绩,如果大于60输出及格了,否则输出不及格
sorce=$1
if [ $sorce -ge 60 ]
then
echo "及格了"
elif [ $sorce -lt 60 ]
then
echo "不及格"
fi
4.case判断语句
4.1.基本语法
case $变量名 in
"值1")
程序
;;
"值2")
程序
;;
* )
其他值进入此分支
;;
esac
4.1.基本案例
#!/bin/bash
#输出数字,如果为1,输出周一,如果为2,输出周二,其他数字,输出其他
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
;;
esac
四.流程控制-循环控制
1.for循环
1.1.for循环基本语法1
for 变量 in 值1 值2 值3
do
程序
done
1.2.语法1的基本案例
#!/bin/bash
#求出位置参数的和
sum=0
for i in $@
do
sum=$[$sum+$i]
echo "$i"
done
echo "结果为 $sum"
2.1.for循环基本语法2
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
2.2.语法2的基本案例
#!/bin/bash
#求出1-100的和
sum=0
for ((i=0;i<=100;i++))
do
sum=$[$sum+$i]
done
echo "1-100的和为:$sum"
2.while循环
2.1.while基本语法
while [ 条件判断 ]
do
程序
done
2.1.while基本案例
#!/bin/bash
#输出一个数n,求出1-n的和
sum=0
n=$1
while [ $n -gt 0 ]
do
sum=$[$sum+$n]
n=$[$n-1]
done
echo "$sum"
五.read读取控制台输入
1.基本语法
read 【选项】(参数)
选项 | 说明 |
---|---|
-p | 指定读取值时的提示符 |
-t | 指定读取值时,等待的时间(秒),如果没有在指定的时间内输入,就不再等待了 |
1.基本案例
#!/bin/bash
#读取控制台的值
read -p "请输入一个值:" NUM1
echo "你输出的值为: $NUM1"
#!/bin/bash
#三秒钟后自动退出
read -t 3 -p "3秒内输入" NUM2
echo "$NUM2"
五.shell函数基础
shell函数和其他编程语言一样,有系统函数,也可以自定义函数
5.1.常用系统函数
①basename 【pathname】【suffix】
功能:返回完成路径最后 / 部分,常用于获取文件名
②dirname 文件绝对路径
功能:返回完成路径最后 / 的前面部分,常用于返回路径部分
5.2.自定义函数基本语法
[function] function[()]{
Action;
[return int;]
}
5.3.函数入门案例
#!/bin/bash
#编写一个函数,用户计算两个数的和
function getSum(){
SUM=$[$N1+$N2]
echo "结果是:$SUM"
}
read -p "请输入第一个数:" N1
read -p "请输入第二个数:" N2
getSum $N1 $N2