IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Shell编程规范及变量 -> 正文阅读

[系统运维]Shell编程规范及变量


一、Shell脚本编程概述

1.1Shell的作用

1.1.1Shell基本概念

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

给该文件可执行权限;

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

1.1.2Shell脚本应用场景

重复性操作

交互性任务

批量事务处理

服务运行状态监控

定时任务执行

1.1.3Shell作用——翻译官

   shell是一个特殊的应用程序,它介于操作系统内核和用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

在这里插入图片描述

1.1.4linux中有哪些Shell

	[root@localhost data]#cat /etc/shells 
	/bin/sh
	/bin/bash
	/sbin/nologin
	/usr/bin/sh
	/usr/bin/bash
	/usr/sbin/nologin
	/bin/tcsh
	/bin/csh

1.1.5 为什么系统上合法的Shel1要写入/etc/she1ls这个文件

因为系统某些服务运行过程中,会去检查用户能够使用的Shell,而这些shell的查询就是借由/etc/shells这个文件。

1.2Shell编程规范# 二、使用步骤

1.2.1编写脚本规范

脚本申明(解释器) :若第一行为“!/bin/bash",表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。还有其它类型的解释器,比如# !/usr/bin/python. #! /usr/bin/expect.

.注释信息:以“#"开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。

可执行语句:比如echo命令,用于输出”"之间的字符串

如果想要把文本字符串和命令输出显示在同一行中,可以使用echo语句的 -n 参数。

示例:

	[root@localhost ~]#vim first.sh   #使用vim编辑器编辑

	#!/bin/bash                       #脚本解释器声明
	#this is my first shell-script    #注释
	echo 当前目录位于:                 #linux输出命令
	pwd                               #linux命令

	#不换行写法
	echo -n 当前目录位于:
	pwd

在这里插入图片描述

1.2.2Shell脚本执行方法

	#法一:指定路径的命令,要求文件必须有x权限
	[root@localhost ~]#chmod +x /root/first.sh 
	[root@localhost ~]#cd /root/
	[root@localhost ~]#./first.sh 
	当前目录位于:
	/root

	#法二:指定Shell来解释脚本,不要求文件必须有x权限。
	[root@localhost ~]#bash first.sh 
	当前目录位于:
	/root

在这里插入图片描述

1.2.3命名要求

区分大小写

不能使程序中的保留字和内置变量:如: if, for, hostname

只能使用数字、字母及下划线,且不能以数字开头,注意:不支持短横线“-",和主机名相反

不要使用内置的变量,使用英文尽量使用词义通俗易懂,PATH

驼峰StudentFirstName

小驼峰studentFirstName·

下划线: student_name

1.2.4脚本错误

1.命令错误:命令出错不会影响接下来的命令继续2.语法错误

2.语法错误:会影响接下来的命令继续

3.逻辑错误:只能自己去筛查

查找代码的正确:

	bash -n 脚本名称 (不在当前目录下加绝对路径)   检查语法错误
	bash -x 脚本名称 (不在当前目录下加绝对路径)   检查逻辑错误

1.3管道与重定向

由于Shell脚本“批量处理”的特殊性,其大部分操作过程位于后台,不需要用户进行干预,因此要学会提取、过滤执行信息变得十分重要,所以我们需要重定向和管道。

1.3.1管道

1.管道操作符:“|”: 将管道符号“|"左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道.

	[root@localhost ~]#ps aux |wc -l   #查看进程数
	267
	[root@localhost ~]#echo "123123"|passwd --stdin zhangsan #给张三设置密码

1.3.2重定向

1、交互式硬件设备

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

2、 重定向操作

类型操作符用途
重定向输入<从指定文件读取数据
重定向输出>将标准输出结果保存到指定的文件,并且覆盖原有文件
>>将标准输出追加到指定的文件的尾部,不覆盖原有内容
标准错误输出2>将错误信息保存到指定文件,并且覆盖原有文件
2>>将错误信息追加到指定文件的尾部,不覆盖原有内容
混合输出&>和2>&1将标准输出,标准错误保存到同—文件中

示例1: 将123456重定向输出到pass.txt文件中,然后将pass.txt的内容重定向输入给用户张三的密码,从pass.txt 文件中取密码,需要注意SELinux 会影响此命令执行,若执行失败可尝试关闭SELinux(setenforce 0)。

	[root@localhost ~]#useradd lili
	[root@localhost ~]#echo "123abc" > pass.txt
	[root@localhost ~]#passwd --stdin lili < pass.txt 
	更改用户 lili 的密码 。
	passwd:所有的身份验证令牌已经成功更新。
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-26 12:32:40  更:2021-10-26 12:33:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 21:26:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码