shell脚本及变量运用

shell脚本概述

概念

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

应用场景

重复性操作
交互性任务
批量事务处理
服务运行状态监控
定时任务执行

shell作用

shell是一个特殊的应用程序,介于系统内核与用户之间,负责解释命令行
负责接收用户输入的操作指令并进行解释,将需要执行的操作传递给内核执行,并输出执行结果
bash:基准于GNU的框架下发展的shell
csh:语法有点类似于c语言
tcsh:整合了csh,提供更多的功能
sh:已经被bash所替换
nologin:奇怪的shell这个shell可以让用户无法登录主机
注:bash是目前大多数Linux版本采用端的默认shell

shell脚本的构成

1,脚本申明:#!/bin/bash:由bas来运行
2,注释信息:这个脚本用来干啥
3,可执行语句

shell脚本的执行

方法一,指定路径的命令,要求文件必须有x,执行的权限
方法二,指定shell来解释脚本,不要求文件必须有x权限

管道操作 |

将管道符号“ | ” 符号左侧的命令输出的结果,作为右侧命令的输出入,同一行命令可以使用多个管道

重定向

交互式硬件设备

标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息

类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stder2显示器
重定向操作

类型
重定向输入
< :从指定的文件读取数据

重定向输出
>:将标准输出结果,保存,到指定的文件,并覆盖原来的数据
>>:将标准输出结果,追加,到指定的文件的尾部,不进行覆盖

标准错误输出
2>:将错误的信息,保存,到指定的文件,并覆盖原来的数据
2>>:将错误的信息,追加,到指定的文件的尾部,不进行覆盖

混合输出
&>:将标准输出,标准错误保存到同一文件中
2>&1:将标准错误输出重定向到标准输出

shell变量

变量的作用
用来存放系统和用户需要使用的特定参数
变量名:使用固定的名称,由系统预设或用户定义
变量值:能够根据用户设置,系统环境的变化而变化

变量的类型
自定义变量:由用户自己定义,修改和使用
特殊变量:环境变量,只读变量,位置变量,预定义变量

自定义变量

变量名以字母或下划线开头,区分大小写,建议全大写
变量名=变量值:注意等号的两边没有空格

查看变量的值

echo $变量名

赋值时使用引号
双引号:允许通过$符号引用其他变量值
单引号:禁止引用其他变量值,$视为普通字符
反撇号:命令替换,提取命令执行后的输出结果

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

方法一:
read -p “提示信息” 变量名
echo $变量名

方法二:
echo -n “提示信息”
read 变量名
echo $变量名

变量作用范围

默认情况下,新定义的变量只在当前的Shell环境中有效。当进入子程序或新的Shell环境时,局部变量将无法再使用。可以通过内部命令export将指定的变量导出为全局变量,使用户定义在所有的子Shell环境中能够继续使用
格式1:export 变量名
格式2:export 变量名=变量值

整数变量的运算

常见的运算表达式
i=$(expr 12 * 5):注意运算符号的两边有空格
i=$(12 * 5 ):同样需要空格
i=$[12*5]:这个两边空格可加可不加
let i=12*5
i++:相当于i=$[$i+1]
i--:相当于i=$ [$i-1]
i+=2:相当于i=$[$i+2]

环境变量

环境变量由系统提前创建,用来设置用户的工作环境
使用 env 命令可以查看到当前工作环境下的环境变量
变量USER表示用户名称,HOME表示用户的宿主目录,LANG表示语言和字符集,PWD表示当前所在的工作目录
变量PATH表示可执行程序的默认搜素路径

只读变量

readonly :设置只读变量
只读变量不可以被重新赋值,不可以被删除,unset命令用于删除变量
在这里插入图片描述

位置变量

当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余字符串参数按照从左到右的顺序依次赋值给位置变量
$n:n为数字,$0代表命令本身,$1~$9代表第一个到第九个参数,若有10个以上参数则需要用大括号表示,如第十个表达为${10},如果写成$10则表示$1 0,第1个参数后加个0

预定义变量

$*,$@ :表示命令或脚本要处理的参数
$* :把所有参数看成以空格分隔的一个字符串整体返回
$@ :把各个参数加上双引号分隔成n份的参数列表,每个参数作为一个字符串返回
$0:表示当前执行的脚本或命令的名称
$#:表示命令或脚本要处理的参数的个数
$?:表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。

bash不支持浮点即小数运算,我们可用bc来进行小数运算

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

也可在bc里面进行运算

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值