shell编程规范与变量

一.shell脚本概述

1.shell脚本的概念

1.1shell的概念

(1)将要执行的命令按顺序保存到一个文本文件
(2)给该文件可执行权限
(3)可结合各种Shell控制语句以完成更复杂的操作

1.2shell脚本的应用场景

(1)重复性操作
(2)交互性任务
(3)批量事务处理
(4)服务运行状态监控
(5)定时任务执行

2.shell的作用

2.1shell作用

相当于解释器,编辑器,与内核进行沟通或应用的程序,这个特殊的应用程序介于系统内核与用户之间,扮演命令解释器的角色,用户输入操作指令通过shell解释,传递给内核,内核执行完还要通过shell返回给用户一个执行结果。

2.2用户登录shell

(1)登录后默认使用的shell程序,一般为/bin/bash
(2)不同shell的内部指令、运行环境等都会有所区别
在这里插入图片描述

3.shell编程规范

3.1编写一个简单shell脚本

vim first.sh ——————————创建

请添加图片描述
在这里插入图片描述

3.2执行脚本文件

(1)脚本文件路径(绝对路径与相对路径)

格式:./+脚本名称
./first.sh——————必须要有读写执行权限
chmod 777 first.sh ——————赋予权限

在这里插入图片描述

(2)sh脚本文件路径

格式:sh+脚本名称
sh first.sh

在这里插入图片描述

(3)source脚本文件路径

格式:source+脚本名称
source first.sh

在这里插入图片描述
(4)bash脚本文件路径

格式:bash+脚本名称
bash first.sh

在这里插入图片描述

4.重定向与管道

4.1交互式硬件设备

(1)标准输入:从该设备接收用户输入的数据
(2)标准输出:通过该设备向用户输出数据
(3)标准错误:通过该设备报告执行出错信息
在这里插入图片描述

4.2重定向操作

请添加图片描述

4.2.1重定向输入(<)的用法

从指定的文件读取文件
请添加图片描述

4.2.2*重定向输出(>>>)*的用法

在这里插入图片描述
不删除源文件清空文件内容:cat /dev/null > passwd.txt
/dev/null相当于黑洞文件强制
请添加图片描述

4.2.3管道操作符号“|”的用法

将左侧的命令输出结果,作为右侧命令的处理对象,主要针对文本内容操作
格式:cmd1 | cmd2 […|cmdn]
例如:
请添加图片描述

二.shell脚本变量的作用

用来存放系统和用户需要使用的特定参数(值)

1.变量名

使用固定的名称,由系统预设或用户定义

1.1变量名的规范

(1)不要使用系统的命令作为变量名
(2)不要使用中文,可使用英文命名
(3)开头不要使用特殊的符号(#¥%*&)等
(4)可以使用_开头命名
(5)要有注释

2.变量的类型

(1)自定义变量
由用户自己定义,修改和使用
(2)特殊变量
环境变量、只读变量、位置变量、预定义变量

3.变量的范围

(1)整数(int)
(2)字符串:string
(3)布尔类型:真、假(0、1)
(4)浮点:不是整数(1.1 1.2)

4.自定义变量

4.1打印变量

格式:echo+变量名
用法:
在这里插入图片描述

4.2赋值时使用引导

(1)双引号
允许通过 符号引用其他变量值( 2 )单引号禁止引用其他变量值, 符号引用其他变量值 (2)单引号 禁止引用其他变量值, 符号引用其他变量值(2)单引号禁止引用其他变量值,视为普通字符
(3)反撇号
命令替换,提取命令执行后的输出结果
请添加图片描述

单双引号赋值无区别:
在这里插入图片描述
单双引号打印:
在这里插入图片描述

总:在赋值时,单双引号没有任何的区别,在打印时,双引号起的是弱引用,单引号起的是强调,因此打印的不再是原本变量值变成自己的字符串

4.3从键盘输入内容为变量赋值

格式:read -p "提示信息“+变量名
用法:

read -p "请输入一个数 : " num
echo $num

在这里插入图片描述

vim test.sh

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

vim test1.sh——————需要进入配置文件里修改不方便

请添加图片描述
在这里插入图片描述

4.4全局变量

特点:所有环境均可使用
优点:全局范围、持久、共享性
缺点:可变——如有多个相同的名会不确定赋值哪一个
格式:export 变量名或export 变量名=变量值

4.4.1临时定义全局变量

vim ex.sh

在这里插入图片描述
在这里插入图片描述
请添加图片描述

4.4.2永久定义全局变量

在配置文件里修改

vim /etc/profile

在这里插入图片描述

vim test.sh

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

4.4.3个人设置全局变量

在此配置文件下修改

vim /root/.bash_profile

在这里插入图片描述

vim test.sh

在这里插入图片描述

在这里插入图片描述

4.5整数变量的运算

4.5.1整数运算的格式类型

格式:
expr 变量1 运算符 变量2
类型:
在这里插入图片描述

4.5.2整数运算的用法

方法1:c=$(expr 5 % 2)
特殊乘法:
在这里插入图片描述
在这里插入图片描述
特殊取余数:
在这里插入图片描述

在这里插入图片描述
方法2:c=$[5%2]

在这里插入图片描述
在这里插入图片描述
方法3:let c= a ∗ a* ab

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

4.6特殊的形式

在这里插入图片描述

4.7bc计算机,支持整数和浮点数运算

格式:echo 数字 算法 数字 | bc
用法:
(1)整数
)
(2)小数
在这里插入图片描述
(3)可以内部自定义全局变量保留小数点几位

echo “scale=3;0.32*6.64” | bc

在这里插入图片描述

三.特殊的shell变量

1.环境变量

1.1环境变量的特点

由系统提前创建,用来设置用户的工作环境

1.2环境变量的配置文件

/etc/profile
~/.bash_profile

1.3环境变量的作用

系统自带,用于设置工作环境(配置系统行为,传递信息,控制程序的执行,这些变量所有用户都可以使用,都可见,可以直接被系统识别到。

1.4环境变量的写法

如:echo $USER、echo $HOME、echo $PWD
请添加图片描述

echo $ PATH在这里插入图片描述
例:

[root@test1 ~]# PATH=“KaTeX parse error: Expected 'EOF', got '#' at position 27: … [root@test1 ~]#̲ export PATH="PATH:/root”
[root@test1 ~]# chmod 777 test.sh

在这里插入图片描述

2.只读变量

不可以被删除,重启即消失
命令:readonly+变量

在这里插入图片描述

3.位置变量

3.1位置变量的表示

表示为$n,n为1~9之间的数字
$0 是本身
10 以上的包括10用{10}表示

3.2位置变量的作用

运行脚本或程序时传递给他们的值,位置变量用于将外部数据 传给脚本执行

3.2位置变量的使用

请添加图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.预定义变量

4.1预定义变量概念

通常是由编辑程序语言或者脚本解释器提供的,根据需要自动设置和更新,不能修改

4.2预定义变量的类型

4.2.1$#

命令行中位置变量的个数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2.2 ∗ 和 *和 @

“$*”:把所有参数看成以空格分隔的一个字符串整体(单字符串)返回,代表"$1 $2 $3 4 " 。 " 4"。 " 4""@“:把各个参数加上双引号分隔成n份的参数列表,每个参数作为一个字符串返回,代表”$1" “$2” “$3” “$4”。
所有位置变量的内容
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
不加双引号
在这里插入图片描述
总:加双引号 ∗ 会把内容处理在一行加双引号 *会把内容处理在 一行 加双引号 会把内容处理在一行加双引号@会把内容分行处理
不加双引号 @ 、 @、 @*会把内容分行处理

4.2.3$?

表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。也常被用于Shell脚本中return退出函数并返回的退出值。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一杯甜酒z

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

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

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

打赏作者

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

抵扣说明:

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

余额充值