目录

Shell是什么

Shell的变量

shell变量的定义

设置环境变量

位置参数变量

预定义变量

运算符

条件判断

流程控制

case语句

for循环

while循环

read读取控制台输入

函数

自定义函数​​​​​​​


Shell是什么

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

  • 脚本格式要求
  1. 脚本以#!/bin/bash开头
  2. 脚本需要有可执行权限
  • 编写第一个Shell脚本

需求说明:创建一个Shell脚本,输出hello world!

  • 脚本的常用执行方式
  1. 方式1(输入脚本的绝对路径或相对路径)

说明:首先要赋予helloworld.sh脚本的+x 权限,再执行脚本

2.方式2(sh+脚本)

说明:不用赋予脚本+ x权限,直接执行即可


Shell的变量

  1. Linux Shell中的变量分为,系统变量和用户自定义变量
  2. 系统变量:$HOME,$PWD,$SHELL,$USER等等,比如:echo $HOME 等等
  3. 显示当前shell中的所有变量:set
  • shell变量的定义
  1. 定义变量:变量=值
  2. 撤销变量:unset 变量
  3. 声明静态变量:readonly变量,注意:不能unset

案例:

  1. 定义变量A
  2. 撤销变量A
  3. 声明静态的变量B=2,不能unset
  4. 可把变量提升为全局环境变量,可供其他shell程序使用[该案例后面讲}


  • shell变量的定义

  1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,5A=200(x)
  2. 等号两侧不能有空格
  3. 变量名称一般习惯为大写
  • 将命令的返回值赋给变量
  1. A="date"反引号,运行里面的命令,并把结果返回给变量A
  2. A=$(date)等价于反引号

  • 设置环境变量

基本语法

  1. export 变量名=变量值 (功能描述:将shell变量输出为环境变量)
  2. source 配置文件  (功能描述:让修改后的配置信息立即生效)
  3. echo $变量名  (功能描述:查询环境变量的值)

快速入门

  1. 在/etc/profile文件中定义TOMCAT_HOME环境变量
  2. 查看环境变量TOMCAT_HOME的值
  3. 在另外一个shell程序中使用 TOMCAT_HOME

注意:在输出TOMCAT_HOME 环境变量前,需要让其生效source /etc/profile

  • shell脚本的多行注释

:<<!

内容


  • 位置参数变量

介绍

当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量

比如: ./myshell.sh 100 200,这个就是一个执行shell的命令行,可以在myshell 脚本中获取到参数信息

基本语法

$n (功能描述:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10})

$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看出一个整体)

$@ (功能描述:这个变量也代表命令行中的所有参数,不过$@把每个参数区分对待)

$# (功能描述:这个变量代表命令行中所有参数的个数)

位置参数变量

案例:编写一个shell脚本  position.sh,在脚本中获取到命令行的各个参数信息


  • 预定义变量

基本介绍

就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用

基本语法

$$ (功能描述:当前进程的进程号(PID))

$! (功能描述:后台运行的最后一个进程的进程号(PID))

$? (功能描述:最后一次执行的命令的返回状态,如果这个变量的值为0,证明上一个命令正确执行;

如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了.)

应用案例

在一个shell脚本中简单使用一下预定义变量

preVar.sh


  • 运算符

基本介绍

学习如何在shell中进行各种运算操作

基本语法

1. "$((运算式))"  或 "$[运算式]"  或者 expr m+n//expression表达式

2.注意expr运算时间要有空格,如果希望将 expr 的结果覆给某个变量,使用``        

3.expr m-n

4.expr  \*,/,%  乘 ,除,取余

应用实例

案例1:计算(2+3)x4的值

案例2:请求出命令行的两个参数[整数]的和


  • 条件判断

判断语句

基本语法

[condition] (注意condition前后要有空格)

#非空返回true,可使用$?验证(0为true,>1为false)

应用实例

[hspEdu]    返回true

[ ]                返回fasle

[ condition ] && echo OK || echo notok   条件满足,执行后面的语句


  • 判断语句

常用判断条件

(1) = 字符串的比较

(2) 两个整数的比较

-lt 小于

-le 小于等于 li

-eq 等于

-gt  大于

-ge 大于等于

-ne  不等于

(3)按照文件权限进行判断

-r 有读的权限

-w 有写的权限

-x 有执行的权限

(4)按照文件类型进行判断

-f 文件存在并且是一个常规的文件

-e 文件存在

-d 文件存在并是一个目录

(4) 应用实例

案例1:"ok"是否等于"ok

判断语句:

案例2: 23是否大于等于22

判断语句:

案例3:/root/shcode/aaa.txt 目录中的文件是否存在

判断语句:


  • 流程控制

if 判断

if [ 条件判断式 ]

then 

代码

fi

或者,多分支

if [ 条件判断式 ]

then 

代码

elif [ 条件判断式 ]

then 

代码

fi

注意事项 :  [ 条件判断式 ],中括号和条件判断式之间必须有空格

应用实例

请编写一个shell程序,如果输入的参数,大于等于60,则输出"及格了",如果小于60,则输出"不及格"


  • case语句

基本语法

case $变量名 in

"值1")

如果变量的值等于值1,则执行程序1

;;

"值2")

如果变量的值等于值2,则执行程度2

;;

...省略其他分支...

*)

如果变量的值都不是以上的值,则执行此程序

;;

esac

应用实例

当命令行参数是1时,输出"周一",是2时,就输出"周二",其他情况输出"other"


  • for循环

基本语法

for  变量   in  值1  值2 值3...

do

程序

done

应用实例

案例1:打印命令行输入参数[这里可以看出 $* 和 $@ 的区别]

注意:$* 是把输入的参数当做一个整体

注意:"$@"有几个参数输出几句

基本语法2

for (( 初始值;循环控制条件;变量变化))

do 

程序

done

应用实例

案例1:从1加到100的值输出显示

把100变成变量,从1加到n


  • while循环

基本语法

while [ 条件判断式 ]

do 

程序

done   

应用实例

案例1:从命令行输入一个数n,统计从1+...+n 的值是多少?

注意一下,while 和[]要有空格,$i和左边的 [  也得有空格


  • read读取控制台输入

基本语法

read(选项)(参数)

选项:

-p:指定读取值时的提示符;

-t:指定读取值时的等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。。

参数

变量:指定读取值的变量名

应用实例

案例1:读取控制台输入一个num值

案例2:读取控制台输入一个num值,在10秒内输入

(案例2超过10秒的情况)


  • 函数

函数介绍

shell编程和其他编程语言一样,有系统函数,也可以自定义函数。系统函数中,我们这里介绍两个。

  • 系统函数

basename基本语法

功能:返回完整路径最后/的部分,常用于获取文件名

basename[pathname][suffix]

basename [string][suffix]    (功能描述:basename命令会删掉所有的前缀包括最后一个( '/' )字符,然后将字符串显示出来。

选项:

suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。

应用实例

案例1:请返回/home/aaa/test.txt 的"test.txt"部分

dirname基本语法

功能:返回完整路径最后/的前面的部分,常用于返回路径部分

dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))

应用实例

案例1:请返回 /home/aaa/test.txt  的/home/aaa


  • 自定义函数

基本语法

[ function ] funname   [()]

{

Action;

[return int;]

}

调用直接写函数名:funname [值]

应用实例

案例1:计算输入两个参数的和(动态的获取),getSum


以上是今天的视频笔记,如有侵权请联系我删除。

 学习如逆水行舟,不进则退。一起加油!

shell编程基础知识相关推荐

  1. Linux网络编程基础知识

    Linux网络编程基础知识 1. 协议的概念 1.1 什么是协议 1.2 典型协议 2 网络应用程序设计模式 2.1 C/S模式 2.2 B/S模式 2.3 优缺点 3 分层模型 3.1 OSI七层模 ...

  2. Linux 操作系统编程基础知识

    Linux操作系统 1.Linux 操作系统编程基础知识 1.3 系统调用和库函数 1.3.1 接口 命令接口:以命令形式呈现在用户面前,方便用户直接或间接控制自己的作业. 程序接口:为应用程序使用系 ...

  3. 什么是Shell?Shell脚本基础知识详细介绍

    这篇文章主要介绍了什么是Shell?Shell脚本基础知识介绍,本文是一篇Shell脚本入门文章,在本文你可学到什么是Shell.有多少种Shell.一个Shell脚本代码实例,需要的朋友可以参考下 ...

  4. Java 网络编程基础知识

    Java 网络编程基础知识 基础概念 计算机网络的基本概念 ​ 网络:多台计算机使用网络设备互联在一起,计算机之间可以进行通信,这样就组成了一个计算机网络. ​ 网络设备:集线器(HUB),路由器,交 ...

  5. Linux Shell编程基础

    linux系统下给命令指定别名alias命令用法: 在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名.虽然可以为命令建立"链接"解决长文件名的问题,但 ...

  6. 16第一章 ASP.Net编程基础知识

    第一章        ASP.Net编程基础知识 第一章        ASP.Net编程基础知识 本章首先介绍用ASP.Net技术编制服务器端动态网页所需的网络和HTML标记语言方面的有关知识.然后 ...

  7. 【⛔拒绝内卷,学会shell,走遍天下都不怕⛔】shell编程基础

    shell编程基础 shell简介 属性 shell是一个命令行解释器,建立了用户和操作系统之间的接口.当我们在命令行输入一个命令后,shell会对命令进行解释,调用相应的程序去执行.shell是一种 ...

  8. Linux——Linux C语言编程基础知识

    源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 通常在gcc后跟一些选项和文件名来使用gcc编译器.gcc 命令的基本用法如下:: gcc [option ...

  9. python编程基础知识点_12个关于Python编程基础知识的总结

    学习任何语言的时候,打好基础非常重要.就像学英文,要知道26个字母,还要学会单词.句型.语法等等.那么Python编程也一样,对于刚入门学习的人更应该打好基础.下面课课家收集了常用的12种Python ...

最新文章

  1. 每天一个JavaScript实例-获取元素当前高度
  2. boost::hana::monadic_compose用法的测试程序
  3. 干货|各种WAF绕过手法学习
  4. 亿些模板【字符串+其他】
  5. RTP Payload Format for H.264 Video
  6. CF Edu54 E. Vasya and a Tree DFS+树状数组
  7. 【Android源码】Activity如何加载布局
  8. 深入理解对象的数据属性与访问器属性及属性间相互转换
  9. java中的jackson_Java中的JSON数据绑定框架Jackson使用介绍
  10. C# datagridview 实现按指定某列或多列进行排序
  11. python选取tensor某一维_python基础教程详解torch.Tensor的4种乘法
  12. 编程中的c语言32个英文代码,C语言图形编程代码(国外英文资料).doc
  13. 全面了解浏览器(内核)发展史
  14. 【Python】Pandas DataFrame 一维表二维表的转换
  15. bitset——定义及常用操作。
  16. 微博图片设计模板素材推荐 精品 小众
  17. 新零售saas小程序如何探索数字化门店的破局之路?
  18. 企业如何正确选择云服务商
  19. linux网络凭据,适用于Linux和Windows的服务器凭据管理
  20. 基于Python的DICOM文件转换教程,使用pydicom将图片存为DICOM文件。

热门文章

  1. 给wangeditor添加上标、下标功能
  2. ArcGIS 构建3D动画方法
  3. ReentrantLock 是什么?怎么用?
  4. KMeans 算法应用于 RGB 图像压缩
  5. linux 中prefetch文件夹,Prefetch是什么 Prefetch文件夹功能介绍
  6. Merger into
  7. 使用.net 的Chart控件绘制曲线图
  8. Canal1.1.4的安装与使用
  9. 2022年塔式起重机司机模拟考试题及塔式起重机司机作业模拟考试
  10. 实现求欧拉回路算法(C++)