shell编程规范与变量

目录

Shell脚本的概念

Shell脚本应用场景

shell的运行原理

脚本的构成

脚本声明(解释器):

注释信息:

可执行语句:

执行脚本命令

脚本执行逻辑

脚本运行错误类别

1、命令错误:

2、语法错误:

3、逻辑错误:

管道符操作

变量

设置变量:变量名=变量值(两边都不可有空格)

调用变量:echo $变量名

删除变量:unset 变量名

重定义变量:变量名=变量值

追加变量值:变量名+=变量值

常见shell变量类型


Shell脚本的概念

  • 将要执行的命令按顺序保存到一个文本文件

  • 给该文件可执行权限

  • 可结合各种Shell控制语句以完成更复杂的操作

Shell脚本应用场景

  • 重复性操作

  • 交互性任务

  • 批量事务处理

  • 服务运行状态监控

  • 定时任务执行

shell的运行原理

人类写了一个命令集合,然后用bash ( shell)翻译给硬件,由硬件执行

脚本的构成

  • 脚本声明(解释器)

  • 第一行开头"#!/bin/bash"表示此行以下的代码语是通过/bin/bash程序来解释执行。#!/bin/bash为默认的解释器还有其他类型的解释器,#! /bin/python#! /bin/expect

  • 注释信息:

  • 以#开头的语句表示为注释信息,可写中文

  • 可执行语句:

  • 比如echo命令用于输出” “之间的字符串

执行脚本命令

  1. 直接调用shell解释器,加上脚本的名字:bash.脚本名,不需要加上权限

  2. 路径/脚本,路径:相对或绝对,shell本质上也是一个程序,需要权限

  3. source:(.)脚本名,不建议使用,会直接修改当前bash环境

注意:1、2 种运行方式,是将程序加载到内存中运行,类似于另开一个运行的模块;3 运行方式会在当前环境下直接运行,会修改当前bash的内容

补充:如果想让脚本全局运行(补全),可以将脚本加入$PATH路径下,并且脚本必须有执行权限,执行命令:echo "$PATH"

脚本执行逻辑

  1. 顺序执行:程序按从上到下顺序执行

  2. 选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行

  3. 循环执行:程序执行过程中需要重复执行多次某段语句

脚本运行错误类别

1、命令错误

不会影响接下来的命令,但本条命令不执行

[root@localhost test1]#bash -x 脚本
#执行脚本,可以发现脚本错误

[root@localhost test1]#vim test.sh
set -e
#加在脚本的第一行
#在执行过程中如果出现错误,立即停止执行

2、语法错误

直接影响脚本 无法正常运行

[root@localhost test1]#bash -n 脚本
#直接检查语法错误,但提示出错行数不一定准确

3、逻辑错误

不影响运行,(只能使用 bash -n进行)

加一些脚本的安全选项(可以不加,有些小错误不影响):

1、在脚本的前面输入 set -e  一旦出错就会立即停止

[root@localhost test1]#vim test.sh
set -e
#如果脚本中变量出错,立即停止执行

2、在脚本的前面输入set -u 变量不存在不让执行

标准输入输出

  • 标准输出

你发了一条指令给电脑操作,电脑会回复结果给你,结果是一定显示在屏幕上

  • 错误输出

电脑没有正确回复,就是错误

  • 标准输入

我们通过键盘、鼠标、扫描仪、话筒等设备,输入给电脑的指令

  • 重定向

    • 改变输出方向,默认电脑数据的输出方向是屏幕

    • 输出到别的 终端设备

    • 输出到文件中

    • ">"和"<"表示输出的方向,>:表示覆盖;>>:表示追加

    • 命令后加&/dev/null:表示将文件移动到垃圾箱

管道符操作

|将左侧的命令输出结果,作为右侧命令的处理对象

[root@localhost test1]#ps aux |grep bash
#查找所有的进程,并过滤出名称中有bash的进程

变量

变量:可变化的值

常量:不可变化的值

注意:在shell中不区分数据类型,所有的数据都是字符串

设置变量:变量名=变量值(两边都不可有空格)

[root@localhost test1]#vim test.sh
dir=/data
#设置变量

调用变量:echo $变量名

[root@localhost test1]#echo $dir
#调用变量

删除变量:unset 变量名

[root@localhost test1]#unset dir
#删除变量

重定义变量:变量名=变量值

[root@localhost test1]#vim test.sh
dir=/opt
#重定义变量

追加变量值:变量名+=变量值

[root@localhost test1]#vim test.sh
dir=/data
dir+=/opt

#追加变量
 

常见shell变量类型

1、自定义变量

  • export:加在命令前表示当前环境下所有程序都执行

  • expr 变量 运算符 变量:计算

  • echo $[RANDOM%3]:表示任意数取余三,$[]:等同于expr,表示计算

  • echo 变量 运算符 变量 | bc:也表示计算,但只有这个可以运算小数

2、预定义变量

$?、$$、$*、$@等shell中自带

  • 显示当前bash的uid号:echo $$

[root@localhost testl]#vim content.sh
#!/bin/bash

echo $1
#显示第一个字符
echo $2
#显示第二个字符
echo $3
#显示第三个字符
echo $0
#显示当前脚本名称
echo $#
#显示参数的总数
echo $*
#将参数内容作为一个字符显示
echo $@
#将参数内容分为单个字符,独立显示

3、环境变量

env可以看到所有环境的变量

4、只读变量

只能读,不能改

5、位置变量

$1、$2、$3········$n

系统内置变量

PATH、UID、HOSTNAME、USER

Shell脚本编辑实验

(如果以  .sh  结尾,shell 脚本会高亮显示)

1、查看系统信息脚本

1、touch system.sh

2、vim system.sh


#!/bin/bash
ip=`ifconfig ens33 |grep netmask |tr -s " " |cut -d " " -f3` 
#tr -s " "表示压缩空格
cpu=`lscpu |grep 型号名称 |tr -s " " |cut -d " " -f2-6`
mem=`free -h |grep Mem |tr -s " " |cut -d " " -f2`
disk=`lsblk |grep disk |tr -s " " |cut -d " " -f4`

echo "-----------------systeminfo-------------------"
echo "本机ip:${ip}"
echo "主机名:$(hostname)"
echo "系统版本:$(cat /etc/redhat-release)"
echo "CPU型号:$cpu"
echo "内存大小:$mem"
echo "磁盘大小:$disk"
echo "----------------------------------------------"

3、bash system.sh

4、sz system.sh
#导出脚本,方便后期使用

2、本地yum安装脚本

1、touch localyum.sh

2、vim localyum.sh


#!/bin/bash
mount /dev/sro /mnt
cd /etc/yum.repos .d
mkdir bak
mv *.repo bak

echo "
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
" > local.repo

yum clean all &>/dev/null
yum makecache &>/dev/null

yum install tree -y &>/dev/null

3、bash  localyum.sh

4、sz  localyum.sh

#导出脚本,方便后期使用

3、创建磁盘分区脚本

1、touch disk.sh

2、vim disk.sh


#!/bin/bash
read -p "请输入分区的设备:" disk
read -p "请输入磁盘的大小:" num

echo -e "n\n\n\n\n${num}\nw\n" |fdisk ${disk}

3、bash disk.sh
请输入分区的设备:/dev/sdb
请输入磁盘的大小:+10G

4、lsblk

5、sz disk.sh

#导出脚本,方便后期使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值