每天都得进步,哪怕是一点!
文章目录
- 一.shell基本介绍
- 1.基本介绍
- 2.shell脚本的执行要求
- 3.脚本的常用执行方式
- 1.基本介绍
- 2.shell变量的定义和撤销
- 3.定义变量的规则
- 4.将命令的结果赋值给变量
- 5.设置环境变量
- 7.位置参数变量
- 8.预定义变量
- 9.shell中的运算符
- 1.条件判断基本语法
- 2.常用的条件判断 `重点`
- 2.1.字符串比较
- 2.2.两个整数的比较
- 2.3.按照文件权限进行判断
- 2.4.按照文件类型进行判断
- 2.5.基本案例
- 3.1.基本语法
- 3.2.基本案例
- 4.1.基本语法
- 4.1.基本案例
- 1.for循环
- 1.1.for循环基本语法1
- 1.2.语法1的基本案例
- 2.1.for循环基本语法2
- 2.2.语法2的基本案例
- 2.1.while基本语法
- 2.1.while基本案例
- 1.基本语法
- 1.基本案例
- 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=100B=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\" ]thenecho \"相等equal\"fi#案例二:判断 23 是否大于 22if [ 23 -ge 22 ]thenecho \"23 大于 22\"fi#案例三:判断当前目录下是否存在aaa.txt文件if [ -e ./aaa.txt ]thenecho \"存在\"fi
3.if判断语句
3.1.基本语法
注意:
[ 条件判断式 ] 中两边都有空格
if [ 条件判断式 ]then程序elif [ 条件判断式 ]then程序fi
3.2.基本案例
#!/bin/bash#成绩通过位置参数获取#输出成绩,如果大于60输出及格了,否则输出不及格sorce=$1if [ $sorce -ge 60 ]thenecho \"及格了\"elif [ $sorce -lt 60 ]thenecho \"不及格\"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 值3do程序done
1.2.语法1的基本案例
#!/bin/bash#求出位置参数的和sum=0for i in $@dosum=$[$sum+$i]echo \"$i\"doneecho \"结果为 $sum\"
2.1.for循环基本语法2
for (( 初始值;循环控制条件;变量变化 ))do程序done
2.2.语法2的基本案例
#!/bin/bash#求出1-100的和sum=0for ((i=0;i<=100;i++))dosum=$[$sum+$i]doneecho \"1-100的和为:$sum\"
2.while循环
2.1.while基本语法
while [ 条件判断 ]do程序done
2.1.while基本案例
#!/bin/bash#输出一个数n,求出1-n的和sum=0n=$1while [ $n -gt 0 ]dosum=$[$sum+$n]n=$[$n-1]doneecho \"$sum\"
五.read读取控制台输入
1.基本语法
read 【选项】(参数)
选项 | 说明 |
---|---|
-p | 指定读取值时的提示符 |
-t | 指定读取值时,等待的时间(秒),如果没有在指定的时间内输入,就不再等待了 |
1.基本案例
#!/bin/bash#读取控制台的值read -p \"请输入一个值:\" NUM1echo \"你输出的值为: $NUM1\"
#!/bin/bash#三秒钟后自动退出read -t 3 -p \"3秒内输入\" NUM2echo \"$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 \"请输入第一个数:\" N1read -p \"请输入第二个数:\" N2getSum $N1 $N2