Linux之Shell编程详解

精心整理Shell编程的入门,并配图加代码,方便大家跟着操作,但是难免不了存在纰漏,感谢大家的指正与理解!觉的写的不错的小伙伴儿,一键三连支持一下,后期会有持续更新!!谢谢大家罒ω罒

1. 为什么要学习shell编程

1)Linux运维工程师:编写Shell程序进行服务集群管理。
2)Python和JavaEE程序员:编写Shell脚本程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。大3)数据程序员:编写Shell程序来管理集群。

2. Shell 是什么

Shell 是一个命令解释权,它为用户提供了一个向 Linux 内核发送请求以便运行程序界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。
在这里插入图片描述

3. Shell 编程快速入门

3.1 脚本格式要求

1)脚本要以 #!/bin/bash 开头
2)脚本要有可执行权限

3.2 编写第一个Shell程序

进入 Linux 终端,创建一个myShell.sh的shell文件:
在这里插入图片描述

3.3 脚本的执行方式
  • 方式1(不推荐)
    1)不用赋予权限,直接使用sh命令执行即可
    在这里插入图片描述

  • 方式2
    1)首先给Shell脚本执行权限(+x)
    2)在当前目录执行脚本
    在这里插入图片描述

4. Shell变量

4.1 Shell变量的定义规则

1)变量名可以由字母、数字、下划线组成,不能以数字开头。
2)变量名=变量值,等号两侧不能有空格
3)变量名一般习惯为大写

4.2 Shell变量的介绍
  1. Linux Shell 变量分为系统变量自定义变量
  2. 系统变量有$HOME,$PATH,$USER等
    在这里插入图片描述
  3. 显示当前 Shell 中所有变量:set 。
4.3 Shell变量的基本语法
  • 定义变量:变量名=变量值。
  • 删除变量:unset 变量名 。
  • 声明静态变量:readonly 变量名,静态变量不能unset。
  • 使用变量:$变量名
    在这里插入图片描述
    在这里插入图片描述
4.4 将命令返回值赋给变量(重点)

1)A=` ls ` 反引号,执行里面的命令,返回给A
1)A=$(ls) 等价于反引号
在这里插入图片描述

5. Shell设置环境变量(重点)

5.1 基本语法:

1)export 变量名=变量值,将 Shell 变量输出为环境变量。
2)source 配置文件路径,让修改后的配置信息立即生效。
3)echo $变量名,检查环境变量是否生效

5.2 快速入门:

1)在环境变量文件/etc/profile中,添加自定义的环境变量TOMCAT_PATH
在这里插入图片描述
2)使用命令source /etc/profile,使配置文件生效
在这里插入图片描述
3)查看环境变量TOMCAT_PATH的值
在这里插入图片描述
4)在另一个shell程序中使用环境变量
在这里插入图片描述
在这里插入图片描述

6. 位置参数变量

1)$n :$0 代表命令本身、$1-$9 代表第1到9个参数,10以上参数用花括号,如 ${10}。
2)$* :命令行中所有参数,且把所有参数看成一个整体。
3)$@ :命令行中所有参数,且把每个参数区分对待。
4)$# :所有参数个数。
实例:
在 Shell 脚本 myShell.sh ,输出命令行输入的各个参数信息。
在这里插入图片描述
在这里插入图片描述

7. 预定义变量

在赋值定义之前,事先在 Shell 脚本中直接引用的变量。使用和位置参数使用方式相同。
基本语法
$$ :当前进程的 PID 进程号。
$! :后台运行的最后一个进程的 PID 进程号。
$? :最后一次执行的命令的返回状态,0为执行正确,非0执行失败。

8. 运算符

8.1 基本语法

1)$((运算式)) 或 $[运算式]
2)expr m + n 注意 expr 运算符间要有空格
3)expr m - n
4)expr \ *,/,% 分别代表乘,除,取余

8.2 实例

计算(2 + 3) * 4 = 20;
在这里插入图片描述

推荐使用 $[运算式] 进行操作

9. 条件判断

9.1 基本语法

[ condition ] 注意condition前后要有空格。非空返回0,0为 true,否则为 false 。

9.2 常用判断条件
符号含义符号含义
=字符串比较-r文件有读权限
-lt小于-w文件有写权限
-le小于等于-x文件有执行权限
-eq等于-f文件存在并且是常规文件
-gt大于-e文件存在
-ge大于等于-d文件存在并且是一个目录
-ne不等于

第一列是数字之间的比较,第二列是文件权限和类型进行判断

10. 流程控制

10.1 if 判断
10.1.1 基本语法

if [ 条件判断式 ]
then
  程序
fi

#或者(推荐)
if [ 条件判断式 ]
then
  程序
elif [ 条件判断式 ]
then
   程序
fi

注意:if和中括号之间,条件判断与中括号之间都有空格

10.1.2 实例

编写 Shell 程序:如果输入的参数大于等于60,输出“及格了”,否则输出“不及格”。
在这里插入图片描述在这里插入图片描述

10.2 case分支
10.2.1 基本语法

case $变量名 in
“值1”)
如果变量值等于值1,则执行此处程序1
;;
“值2”)
如果变量值等于值2,则执行此处程序2
;;
…省略其它分支…
*)
如果变量值不等于以上列出的值,则执行此处程序
;;
esac

10.2.2 实例

编写 Shell 程序:当命令行参数为1时输出“周一”,2时输出“周二”,其他情况输出“其它”。
在这里插入图片描述
在这里插入图片描述

10.3 for 循环
10.3.1 基本语法

#语法1
for 变量名 in 值1 值2 值3…
do
  程序
done

#语法2
for ((初始值;循环控制条件;变量变化))
do
  程序
done

10.3.2 实例
  1. 打印命令行输入的参数。(注意$* 和 $@ 的区别)
    在这里插入图片描述在这里插入图片描述

$*是把参数看成整体一个,而$@是把参数看成个体

  1. 输出从1加到100的值。
    在这里插入图片描述在这里插入图片描述
10.4 while循环
10.4.1 基本语法

while [ 条件判断式 ]
do
  程序
done

10.4.2 实例

从命令行输入一个参数n,计算1+…+n的值
在这里插入图片描述在这里插入图片描述

11. 读取控制台输入

11 .1 基本语法

read(选项)(参数)
选项
-p:指定读取值时的提示符
-t:指定读取值时等待的时间(秒),如果没有在指定时间内输入,就不再等待了。

11 .2 实例
  1. 在控制台输入一个num值。
  2. 在控制台输入一个num值,并且在3秒内输入。
    在这里插入图片描述在这里插入图片描述

12. 函数

和其它编程语言一样,Shell 编程有系统函数自定义函数,本文只举两个常用系统函数。

12.1 系统函数

主要介绍两个

  • basename,删掉路径最后一个 的所有部分(包括/),常用于获取文件名。
    基本语法:
    • basename [pathname] [suffix]
    • basename [string] [suffix]
    • 如果指定 suffix,也会删掉pathname或string的后缀部分。
  • dirname,删掉路径最后一个 / 的所有部分(包括/),常用于获取文件路径。
    基本语法:
    dirname pathname如果路径中不含 / ,则返回 ‘.’ (当前路径)。
    在这里插入图片描述
12.2 自定义函数

基本语法

[ function ] funname[()]
{
 Action;
 [return int;]
}

调用

funname 参数1 参数2

实例

计算输入两个参数的和。
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

corlor_龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值