Linux — 进阶篇_Shell(环境变量、位置参数变量、预定义变量、运算符、条件判断、流程控制、read读取控制台输入、系统函数、自定义函数)


欢迎访问笔者个人技术博客:http://rukihuang.xyz/

一、为什么要学习Shell编程

  1. Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理。
  2. 对于JavaEEhe Python程序员来说,是工作的需要,如要求编写一些Shell脚本进行程序或服务器的维护。
  3. 对于大数据程序员来说,需要编写Shell程序来管理集群。

二、Shell是什么

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

三、Shell脚本的快速入门

3.1 脚本格式要求

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

3.2 编写第一个Shell脚本

  • 创建一个Shell脚本,输出一个Hello world

  • 步骤如下:

  1. 先创建一个myshell.sh文件,并输入命令

在这里插入图片描述

  1. 赋予可执行权限

在这里插入图片描述

  1. 执行,相对路径和绝对路径都可以

在这里插入图片描述

四、Shell变量

4.1 Shell变量的介绍

  1. Linux Shell变量分为:系统变量用户自定义变量
  2. 系统变量:
    1. $HOME
    2. $PWD
    3. $SHELL
    4. $USER

在这里插入图片描述

在这里插入图片描述

  1. 显示当前shell中所有的变量:set

4.2 Shell变量的定义

4.2.1 基本语法

  1. 定义变量:变量=值
  2. 撤销变量:unset 变量
  3. 声明静态变量:readonly 变量=值(静态变量是不能unset的)

在这里插入图片描述

4.2.2 定义变量的规则

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

4.2.3 将命令的返回值赋给变量

  1. A=ls -l 目录名。反引号(这里编程代码块了)
  2. A=$(ls -l 目录名)$等价于反引号

在这里插入图片描述

在这里插入图片描述

4.3 设置环境变量

4.3.1 基本语法

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

4.3.2 快速入门

  1. /etc/profile文件中定义TOMCAT_HOME环境变量
  2. 查看环境变量TOMCAT_HOME的值
    1. 让其生效才能查看:source /etc/profile
  3. 在另外一个shell程序中使用TOMCAT_HOME

在这里插入图片描述

在这里插入图片描述

  • linux中的多行注释:<<要注释的内容!

4.4 位置参数变量

4.4.1 介绍

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

4.4.2 基本语法

  1. $n:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数,需要用大括号包含,${10}
  2. $*:这个变量代表命令行中所有的参数,把所有的参数看做一个整体
  3. $@:这个变量也代表命令行中的所有参数,把每个参数区分对待
  4. $#:这个变量代表命令行中所有参数的个数

4.4.3 应用实例

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

在这里插入图片描述

在这里插入图片描述

4.5 预定义变量

4.5.1 基本介绍

  • shell事先已经定义好的变量,可以直接在shelle脚本中使用

4.5.2 基本语法

  1. $$:当前进程的进程号(PID)
  2. $!:后台运行的最后一个进程的进程号(PID)
  3. $?:最后一次执行的命令的返回状态。
    1. 如果这个变量的值为0,证明上一个命令正确执行;
    2. 如果这个变量的值为非0,则证明上一个命令执行不正确。

在这里插入图片描述

在这里插入图片描述

4.6 运算符

4.6.1 基本介绍

  • 在shell中进行运算操作

4.6.2 基本语法

  1. $((运算式))$[]
  2. expr m + n
    1. 注意expr运算符间要有空格
    2. \* / %:乘、除、取余

在这里插入图片描述

4.7 条件判断

4.7.1 判断语句 基本语法

  • [ condition ]:condition前后都要有空格
    • 非空返回true,可使用$?验证(0为true,>1为false
  • 应用实例
[ nihao ] true
[ ] false

4.7.2 常用判断条件

两个整数的比较

  1. =:字符串比较
  2. -lt:小于
  3. -le:小于等于
  4. -eq:等于
  5. -gt:大于
  6. -ge:大于等于
  7. -ne:不等于

按照文件权限进行判断

  1. -r:有读的权限
  2. -w:有写的权限
  3. -x:有执行的权限

按照文件类型判断

  1. -f:文件存在并且是一个常规的文件
  2. -e:文件存在
  3. -d:文件存在并且是一个目录

4.7.3 应用实例

  • "ok"是否等于“ok”

在这里插入图片描述

  • 23是否大于等于22

在这里插入图片描述

  • /root/install.log目录中的文件是否存在

在这里插入图片描述

4.8 流程控制

4.8.1 if 判断

  • 基本语法
if[ 条件判断式 ]
 then
 	程序
 elif[ 条件判断式 ]
 then
 	程序
fi
  • 注意:[ 条件判断式 ]中条件判断式两边都有空格

在这里插入图片描述

4.8.2 case 语句

  • 基本语法
case $变量名 in 
"值1")	
	如果变量的值等于值1,则执行程序1
	;;
"值2")
	如果变量的值等于值2,则执行程序2
	;;
"值3")
	如果变量的值等于值3,则执行程序3
	;;
*)
	如果变量的值都不是以上的值,则执行此程序
	;;
esac

在这里插入图片描述

4.8.3 for循环

  • 基本语法1
for 变量 in 值1 值2 值3
do
	程序
done

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

4.8.4 while循环

  • 基本语法
while [ 条件判断式 ]
do
	程序
done

在这里插入图片描述

4.9 read读取控制台输入

4.9.1 基本语法

  • read [选项] [参数]

  • 选项:

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

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

在这里插入图片描述

4.10 函数

4.10.1 函数介绍

  • shell编程和其他编程语言一样,有系统函数,也可以自定义函数。

4.10.2 系统函数

basename

  • 基本语法1:basename [pathname] [suffix]
    • 功能:返回完整路径最后/的部分,常用于获取文件名;若指定后缀,就会把后缀删除

在这里插入图片描述

dirname

  • 基本语法:dirname [pathname]
    • 功能:返回完整路径最后/的前面部分,常用于返回路径部分

在这里插入图片描述

4.10.3 自定义函数

  • 基本语法
[function] funname[()]
{
	Action;
	[return int;]
}
  • 调用直接写函数名:funname[值]

在这里插入图片描述

发布了116 篇原创文章 · 获赞 105 · 访问量 7082

猜你喜欢

转载自blog.csdn.net/weixin_43508544/article/details/102923910
今日推荐