shell基础--脚本创建---判断,脚本安全,set命令

一. 编程基础

程序
程序:算法+数据结构
数据:是程序的核心
数据结构:数据在计算机中的类型和组织方式
算法:处理数据的方式
程序编程风格
过程式:以指令为中心,数据服务于指令
对象式:以数据为中心,指令服务于数据
shell程序:提供了编程能力,解释执行

编程逻辑处理方式:
顺序执行
循环执行
选择执行
shell编程:过程式、解释执行
编程语言的基本结构:
各种系统命令的组合
数据存储:变量、数组
shell脚本:
包含一些命令或声明,并符合一定格式的文本文件
格式要求:首行shebang机制(使用的语言)

#!/bin/bash
#!/usr/bin/python
#!/usr/bin/perl

shell脚本的用途有:
1.自动化常用命令
2.执行系统管理和故障排除
3.创建简单的应用程序
4.文本或文件

二. 创建shell脚本

第一步:使用文本编辑器来创建文本文件
第一行必须包括shell声明序列:#!
示例:#!/bin/bash
添加注释
注释以#开头
第二步:运行脚本
给予执行权限,在命令行上指定脚本的绝对或相对路径
直接运行解释器,将脚本作为解释器程序的参数运行

1. 脚本基本格式

脚本代码开头约定

1、第一行一般为调用使用的语言
2、程序名,避免更改文件名为无法找到正确的文件
3、版本号
4、更改后的时间
5、作者相关信息
6、该程序的作用,及注意事项
7、最后是各版本的更新简要说明

例如

#!/bin/bash
# ------------------------------------------
# Filename: hello.sh
# Revision: 1.1
# Date: 2020/10/20
# Author: qcq
# Email: qcq@gmail.com
# Website: www.qcq.com
# Description: This is the first script
# Copyright: 2020  qcq
# License: GPL
# ------------------------------------------
echo “hello world”

2. 脚本调试

1.检测脚本中的语法错误
bash -n /path/to/some_script
2.调试执行___用于跟踪
bash -x /path/to/some_script

3. 条件判断if

注意:if语句可嵌套
单分支

if 判断条件;then
	条件为真的分支代码
fi

双分支

if 判断条件; then
	条件为真的分支代码
else
	条件为假的分支代码
fi

多分支

if 判断条件1; then
条件1为真的分支代码
elif 判断条件2; then
条件2为真的分支代码
elif 判断条件3; then
条件3为真的分支代码
else
以上条件都为假的分支代码
fi

逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if语句

例如:
根据命令的退出状态来执行命令

if ping -c1 -W2 station1 &> /dev/null; then 
	echo 'Station1 is UP' 
elif grep "station1" ~/maintenance.txt &> /dev/null; then 
	echo 'Station1 is undergoing maintenance'
else 
	echo 'Station1 is unexpectedly DOWN!' 
exit 1 
fi

实现一个脚本判断年龄5-20 好好学习 20-50好好工作 60-100享受生活
^[0-9]+$ 这个表示数字(扩展正则表达式)
在这里插入图片描述
在这里插入图片描述

4. 条件判断case

case支持glob风格的通配符:

*: 任意长度任意字符
?: 任意单个字符
[]:指定范围内的任意单个字符
a|b: a或b

格式

case 变量引用 in
PAT1)
	分支1
	;;
PAT2)
	分支2
	;;
*)
	默认分支
	;;
esac

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

三 防止扩展

反斜线(\)会使随后的字符按原意解释
echo Your cost: $5.00
Your cost: $5.00
加引号来防止扩展

小括号优先级最高–用于分组

 单引号(’’)防止所有扩展
•双引号(”“)也可防止扩展,但是以下情况例外:
$(美元符号) 变量扩展
` ` (反引号) 命令替换
\(反斜线) 禁止单个字符扩展
!(叹号) 历史命令替换
$- 变量
h:hashall,打开这个选项后,Shell 会将命令所在的路径hash下来,避免每次
都要查询。通过set +h将h选项关闭
i:interactive-comments,包含这个选项说明当前的 shell 是一个交互式的
shell。所谓的交互式shell,在脚本中,i选项是关闭的。
m:monitor,打开监控模式,就可以通过Job control来控制进程的停止、继
续,后台或者前台执行等。
B:braceexpand,大括号扩展
H:history,H选项打开,可以展开历史列表中的命令,可以通过!感叹号来完
成,例如“!!”返回上最近的一个历史命令,“!n”返回第 n 个历史命令

在这里插入图片描述

五. 脚本安全

set 命令

set 变量 值 直接赋值

set ip 192.168.8.100

-u 当没有有变量不存在----报错—不会执行
等同set –o nounset
-e 如果一个命令错误就会直接退出
等同set –o errexit

set -u建议使用
当DIR不存在时 那么就会把你/*.txt 文件都删除
在这里插入图片描述

六. 重点

小括号 退出的是shell(子shell)
花括号 当前进程退出{ ; }但最后必须有一个分好

建议: Set -u 和set -e(编写脚本时)使用
在最前面使用
shell脚本后缀一般为.sh

执行shell的方法

  1. 执行时用bash 文件名(这种方式很少用)
    在这里插入图片描述
    所以得找一个文件—把这个路径扔到文件里
    改path变量(给他加上路径)

2.用路径执行必须加 ------执行权限x

或者直接 用绝对路径(就可以执行) 麻烦
也可以 用相对路经(相对于上一级目录) 麻烦
在这里插入图片描述
3.更改path变量(增加shell文件上级目录)
在/etc/profile.d/env.sh
在这里插入图片描述
然后重新登录( 这样就可执行脚本脚本)
在这里插入图片描述

4.可以用管道将他的内容传给bash
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值