当前位置:主页 > 查看内容

Shell编程入门学习

发布时间:2021-06-21 00:00| 位朋友查看

简介:文章目录 Shell编程 Shell脚本的执行方式 Shell的变量 Shell的变量的介绍 shell变量的定义 设置环境变量 位置参数变量 介绍 基本语法 预定义变量 基本介绍 基本语法 运算符 基本语法 条件判断 判断语句 常用判断条件 流程控制 if 判断 case语句 for循环 whil……

Shell编程

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

在这里插入图片描述

Shell脚本的执行方式

脚本格式要求

  1. 脚本以#!/bin/bash开头

  2. 脚本需要有可执行权限

在这里插入图片描述

脚本的常用执行方式

方式1(输入脚本的绝对路径或相对路径)

1)首先要赋予helloworld.sh 脚本的+x权限

2)执行脚本

在这里插入图片描述

在这里插入图片描述

方式2(sh+脚本)

说明:不用赋予脚本+x权限,直接执行即可。
在这里插入图片描述

Shell的变量

Shell的变量的介绍

1)Linux Shell中的变量分为,系统变量和用户自定义变量。

2)系统变量: H O M E 、 HOME、 HOMEPWD、 S H E L L 、 SHELL、 SHELLUSER等等 比如: echo $HOME 等等…

3)显示当前shell中所有变量:set

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

shell变量的定义

基本语法

1)定义变量:变量=值

2)撤销变量:unset 变量

  1. 声明静态变量:readonly变量,注意:不能unset
    在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

定义变量的规则

  1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。

  2. 等号两侧不能有空格

  3. 变量名称一般习惯为大写

将命令的返回值赋给变量

1)A=ls -la 反引号,运行里面的命令,并把结果返回给变量A

2)A=$(ls -la) 等价于反引号

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

设置环境变量

基本语法

  1. export 变量名=变量值 (功能描述:将shell变量输出为环境变量)

  2. source 配置文件 (功能描述:让修改后的配置信息立即生效)

  3. echo $变量名 (功能描述:查询环境变量的值)

位置参数变量

介绍

当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量 比如 : ./myshell.sh 100 200 , 这个就是一个执行shell的命令行,可以在myshell 脚本中获取到参数信息

基本语法

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

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

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

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

在这里插入图片描述

在这里插入图片描述

预定义变量

基本介绍

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

基本语法

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

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

$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正 确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正 确了。)

在这里插入图片描述

在这里插入图片描述

运算符

基本语法
  1. ( ( 运 算 式 ) ) ” 或 “ ? ? ((运算式))”或“** (())??[运算式]**”

  2. expr m + n 注意expr运算符间要有空格

  3. expr m - n

  4. expr *, /, % 乘,除,取余
    在这里插入图片描述

在这里插入图片描述


推荐这种:

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

条件判断

判断语句

基本语法

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

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

应用实例

[ atguigu ] 返回true

[] 返回false

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

在这里插入图片描述

在这里插入图片描述

常用判断条件
  1. 两个整数的比较

= 字符串比较 -

lt 小于

-le 小于等于 -

eq 等于

-gt 大于

-ge 大于等于

-ne 不等于

  1. 按照文件权限进行判断

-r 有读的权限

-w 有写的权限

-x 有执行的权限

3)按照文件类型进行判断

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

-e 文件存在

-d 文件存在并是一个目录
在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

流程控制

if 判断

基本语法

if [ 条件判断式 ];then

程序

fi

或者 if [ 条件判断式 ]

then 程序

elif [条件判断式]

then 程序

fi

注意事项:(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格(2) 推荐使用第二种方式

应用实例

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


在这里插入图片描述
在这里插入图片描述

case语句

基本语法

case $变量名 in

“值1”)

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

;; “值2”)

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

;;

…省略其他分支…

*)

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

;;

esac

应用实例

案例1 :当命令行参数是 1 时,输出 “周一”, 是2 时,就输出"周二", 其它情况输出 “other”
在这里插入图片描述

在这里插入图片描述

for循环

基本语法1

for 变量in 值1 值2 值3…

do

? 程序

done

? 应用实例

案例1 :打印命令行输入的参数

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


基本语法2

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

do

程序

done ?

应用实例

案例1 :从1加到100的值输出显示 [这里可以看出$* 和 $@ 的区别]


在这里插入图片描述

在这里插入图片描述

while循环

基本语法1

while [ 条件判断式 ]

do

? 程序

done

应用实例

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


在这里插入图片描述

在这里插入图片描述

read读取控制台输入

基本语法

read(选项)(参数)

选项:

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

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

参数

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

应用实例

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

案例2:读取控制台输入一个num值,在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

在这里插入图片描述

在这里插入图片描述

;原文链接:https://blog.csdn.net/hkdhkdhkd/article/details/115617476
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐