Shell脚本①编程规范与脚本基础

目录

一.Shell脚本概述

1.基本概念

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

(2)给该文件可执行权限;

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

2.基本构成

(1)解释器:是用什么语言写的

(2)注释:解释语句含义

(3)执行语句

3.脚本运行

(1)使用路径执行(需要加执行权限)

(2)直接使用解释器(不需要执行权限)

(3)source和.执行(不需要执行权限)

4.Shell脚本种类

二.Shell脚本执行

1.执行逻辑

2.执行方法

(1)方法一:指定路径命令,文件需由可执行(x)权限

(2)方法二:指定shell来解释脚本,不必须有可执行(x)权限

(3)方法三:source与.脚本路径执行shell脚本

(4)方法四:将脚本文件放入$PATH中目录的其中一个目录,直接输入脚本名执行

(5)方法五:自己创建一个路径(将脚本文件所在的绝对路径添加至PATH中)

3.脚本错误调试

(1)语法错误,会导致后续的命令不继续执行,可以用bash -n 检查错误,提示的出错行数不一定是准确的

(2)命令错误,默认后续的命令还会继续执行,用bash -n 无法检查出来 ,可以使用 bash -x 进行观察

(3)逻辑错误:只能使用 bash -x 进行

三.重定向与管道符

1.交互式硬件设备标准输入输出

(1)标准输入:从该设备接收用户输入的数据

(2)标准输出:通过该设备向用户输出数据

(3)标准错误:通过该设备报告执行出错信息

2.重定向具体操作

3.管道符

五.echo命令


一.Shell脚本概述

1.基本概念

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

2.基本构成

(1)解释器:是用什么语言写的
(2)注释:解释语句含义
(3)执行语句

3.脚本运行

(1)使用路径执行(需要加执行权限)
(2)直接使用解释器(不需要执行权限)
(3)source和.执行(不需要执行权限)

注意:使用前两种方式执行会去开启子bash环境执行,使用source和.会影响当前环境

4.Shell脚本种类

查看shells文件位置:/etc/shells

二.Shell脚本执行

1.执行逻辑

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

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

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

2.执行方法

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

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

(3)方法三:source与.脚本路径执行shell脚本
#方法三:source 与 . 脚本路径执行shell脚本
[root@localhost ~]#source first.sh 
当前目录位于:
/root

(4)方法四:将脚本文件放入$PATH中目录的其中一个目录,直接输入脚本名执行
#方法四:将脚本文件放入$PATH中目录的其中一个目录,直接输入脚本名
echo $PATH
/usr/local/sbin:/usr/local/bin :/usr/sbin :/usr/bin: / rpot/bin

(5)方法五:自己创建一个路径(将脚本文件所在的绝对路径添加至PATH中)
[root@localhost ~]#vim /etc/profileexport PATH=$PATH:/root/shell  
#export使环境变量的值全局环境下生效,不加export默认在当前环境变量下生效[root@localhost ~]#source /etc/profile   #刷新配置文件
[root@localhost ~]# echo $PATH           #查看当前路径
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/shell
[root@localhost ~]# chmod +x 1.sh        #给脚本加上执行权限
[root@localhost ~]#1.sh                  #输入脚本名 直接执行
hello 

3.脚本错误调试

(1)语法错误,会导致后续的命令不继续执行,可以用bash -n 检查错误,提示的出错行数不一定是准确的
(2)命令错误,默认后续的命令还会继续执行,用bash -n 无法检查出来 ,可以使用 bash -x 进行观察
(3)逻辑错误:只能使用 bash -x 进行

三.重定向与管道符

1.交互式硬件设备标准输入输出

(1)标准输入:从该设备接收用户输入的数据
(2)标准输出:通过该设备向用户输出数据
(3)标准错误:通过该设备报告执行出错信息
类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stderr2显示器

2.重定向具体操作

类型操作符用途
重定向输入<从指定的文件读取数据,而不是从键盘输入
重定向输出>将输出结果保存到指定的文件(覆盖原有内容)
重定向输出>>将输出结果换行添加在文件尾部
重定向错误输出2>将错误信息保存到指定的文件(覆盖原有内容)
重定向错误输出2>>将错误信息追加到指定的文件中
混合输出&>将标准输出、标准错误的内容保存到同一个文件中

重定向输出修改密码

3.管道符

管道符号 “|”

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

免密修改密码

五.echo命令

打印输出内容

选项作用
-n不追加换行
-e\b    退格
\c    抑制更多的输出
\n    换行

\t    横向制表符

\v    纵向制表符

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/424562.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Asp.net core 框架入门

概述 appsettings.json&#xff1a;配置文件&#xff0c;数据库连接字符串配置信息 Program.cs&#xff1a;程序入口文件&#xff08;里面有个Main方法&#xff09; Startup.cs&#xff1a;启动配置文件 依赖项&#xff1a;管理项目所依赖的第三方组件的安装&#xff0c;配…

Modbus通信无法正确接收应答的问题处理

问题现象&#xff1a; 现场反馈&#xff0c;modbus网关无法正确读取就地设备的温度信息。使用PC连接就地设备可以正常读取。 问题调查&#xff1a; 拿到末端设备后&#xff0c;故障现象可重复&#xff0c;不过使用PC的USB转485适配器也无法正常读取数据。 如下图&#xff1…

基于神经网络的电力系统的负荷预测

一、背景介绍&#xff1a; 电力系统负荷预测是生产部门的重要工作之一&#xff0c;通过准确的负荷预测&#xff0c;可以经济合理地安排机组的启停、减少旋转备用容量、合理安排检修计划、降低发电成本和提高经济效益。负荷预测按预测的时间可以分为长期、中期和短期负荷预测。…

解决Git添加.gitignore文件后不生效的问题

1. 问题描述 如上图所示&#xff0c;在已存在.gitignore文件且已经提交过的Git管理的项目中&#xff0c;其中.class、.jar文件以及.idea目录内的内容全部都还是被Git管理了&#xff0c;可见.gitignore文件并没有生效。 2. 原因发现 .gitignore文件只能作用于 Untracked Files…

机械臂雅可比矩阵的矢量积理解和matlab实现

雅可比矩阵的第Ji列&#xff1a; 关于一些基本概念可以参考博客&#xff0c;部分细节如下&#xff1a; 每个移动关节&#xff0c;Ji可以这样计算&#xff1a; 每个旋转关节&#xff0c;Ji这样计算&#xff1a; 有时候要求按照末端执行器坐标系{n}来执行一些位移旋转之类的…

数据库缓存策略

数据库缓存策略 以下是数据库与缓存的五种常见策略。 1缓存旁路 缓存旁路&#xff08;Cache-Aside&#xff09; 在缓存旁路策略中&#xff0c;数据库缓存位于数据库旁边。当应用程序请求数据时&#xff0c;它会首先检查缓存 如果缓存中存在数据&#xff08;缓存命中&#xff…

【Linux】常见指令(一)

前言: Linux有许多的指令&#xff0c;通过学习这些指令&#xff0c;可以对目录及文件进行操作。 文章目录 一、基础指令1. ls—列出目录内容2. pwd—显示当前目录3. cd—切换目录重新认识指令4. touch—创建文件等5. mkdir—创建目录6. rmdir指令 && rm 指令7. man—显…

MySQL InnoDB 底层数据存储

InnoDB 页记录Page Directory记录迁移 页 是内存与磁盘交互的基本单位&#xff0c;16kb。 比如&#xff0c;查询的时候&#xff0c;并不是只从磁盘读取某条记录&#xff0c;而是记录所在的页 记录 记录的物理插入是随机的&#xff0c;就是在磁盘上的位置是无序的。但是在页中…

MNIST 数据集详析:使用残差网络RESNET识别手写数字(文末送书)

MNIST 数据集已经是一个几乎每个初学者都会接触的数据集, 很多实验、很多模型都会以MNIST 数据集作为训练对象, 不过有些人可能对它还不是很了解, 那么今天我们一起来学习一下MNIST 数据集&#xff0c;同时构建残差网络来识别手写数字。 1.MNIST 介绍 MNIST手写数字数据库具有…

【数据结构和算法】--- 二叉树(3)--二叉树链式结构的实现(1)

目录 一、二叉树的创建(伪)二、二叉树的遍历2.1 前序遍历2.2 中序遍历2.3 后序遍历 三、二叉树节点个数及高度3.1 二叉树节点个数3.2 二叉树叶子节点个数3.3二叉树第k层节点个数3.4 二叉树查找值为x的节点 四、二叉树的创建(真) 一、二叉树的创建(伪) 在学习二叉树的基本操作前…

开发实战角度:distinct实现原理及具体优化总结

1.背景 Distinct是一种常用的操作&#xff0c;在所有数据库的SQl语言中都是一个非常重要的操作&#xff0c;在Hive中&#xff0c;Distinct去重原理是通过MapReduce来实现的&#xff0c;Distinct操作可以应用于单个列&#xff0c;亦可以应用于多个列。基本原理是将输入的数据集…

(十四)Head first design patterns建造者模式(c++)

建造者模式 建造者把产品细节的实现过程单独封装成类&#xff0c;完成产品本身和创建产品之间的解耦。每一个建造者都相对独立&#xff0c;因此在建造细节实现方面实现了灵活性和可扩展性。 建造者模式和工厂模式的区别&#xff1a;工厂模式关心把这个产品创建出来&#xff0…