Shell脚本——编程规范与echo命令

这篇具有很好参考价值的文章主要介绍了Shell脚本——编程规范与echo命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一.Shell脚本编程概述

1.基本概念

2.作用

3.Linux系统中常见的Shell脚本种类

4.应用场景

5.问题补充

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

5.2 用户什么时候可以取得shell来工作?用户默认会取得哪一个shell?

二.Shell脚本的构成规范

三. Shell脚本的执行

1.脚本执行逻辑

2.Shell脚本的执行方法

3.脚本错误调试

四.重定向与管道符

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

2.重定向具体操作

         3.管道符

3.1 使用管道符修改密码

3.2 查看文件内容

五.echo命令:打印输出内容


一.Shell脚本编程概述

1.基本概念

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

  • 给该文件可执行权限;

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

2.作用

Linux 系统中的 Shell 是一个特殊的应用程序,它介于操作系统内核与用户之间,充当 了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执 行的操作传递给内核执行,并输出执行结果。 常见的 Shell 解释器程序有很多种,使用不同的 Shell 时,其内部指令、命令行提示符 等方面会存在一些区别。

3.Linux系统中常见的Shell脚本种类

通过/etc/shells 文件可以了解当前Linux系统所支持的 Shell 脚本种类。

Shell脚本——编程规范与echo命令

  • bash:基于gun的框架下发展的shell(/bin/bash)是目前大多数Linux 版本采用的默认shell
  • csh:类似c语言的shell
  • tcsh:整合了csh提供了更多功能
  • sh:已经被bash替换
  • nologin:让用户无法登录

注: bash ( /bin/bash) 是目前大多数Linux版本采用的默认Shell。

4.应用场景

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

5.问题补充

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

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

5.2 用户什么时候可以取得shell来工作?用户默认会取得哪一个shell?

     当用户登录的时候,系统就会给我一个shell让我来用,而这个登录取得的Shell就记录在/etc/passwd这个文件内

二.Shell脚本的构成规范

编写脚本代码

  • 使用vi或者vim编辑器,一般都是使用vim编辑器
  • 每行一条Linux命令,按执行顺序一次编写
vim 1.sh					#使用vim编辑器编写shell脚本
#!/bin/bash					#脚本解释器声明
#输出hello zhuzi		    #注释
echo "hello zhuzi"			#linux命令
  • 脚本申明(解释器):第一行开头“#!/bin/bash”,表示此行以下的代码语句是通过/bin/bash程序来解释执行。#!/bin/bash为默认的解释器,其他类型的解释器如#!/bin/python  #!/bin/expect
  • 注释信息:以#开头的语句表示为注释信息
  • 可执行语句:比如echo命令用于输出"  "之间的字符串

Shell脚本——编程规范与echo命令

三. Shell脚本的执行

1.脚本执行逻辑

  • 顺序执行:程序按从上到下顺序执行
  • 选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行
  • 循环执行:程序执行过程中需要重复执行多次某段语句

2.Shell脚本的执行方法

#法一:指定路径的命令,要求文件必须有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
 
#法三:source 与 . 脚本路径执行shell脚本
[root@localhost ~]#source first.sh 
当前目录位于:
/root

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

#法五:自己创建一个路径(将脚本文件所在的绝对路径添加至PATH中)
在/etc/profile文件最后添加:export PATH=$PATH:脚本所在的绝对路径
直接输入脚本名执行脚本

2.1 方法一:指定路径的命令,要求文件必须有 x(可执行)权限

chmod +x /root/1.sh					#给脚本添加可执行权限
指定绝对路径: /root/1.sh 			
指定相对路径: ./1.sh

Shell脚本——编程规范与echo命令

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

bash(sh)执行脚本, 系统会创建一个子shell环境,并在这个子shell环境中执行这个脚本 ,脚本执行结束后系统就会自动退出bash环境

Shell脚本——编程规范与echo命令

2.3 方法三: source 与 . 脚本路径执行shell脚本(不建议使用)

 不建议使用source 与 . 执行脚本会在当前 shell 环境中执行脚本 影响当前环境

Shell脚本——编程规范与echo命令

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

echo $PATH
/usr/local/sbin:/usr/local/bin :/usr/sbin :/usr/bin: / rpot/bin

以下两个目录一般放自己创建或第三方应用程序生成的命令文件

  • /usr/local/sbin:只有管理员能执行的命令
  • /usr/local/bin :所有用户能够执行的命令

以下两个目录一般放系统自带或者系统生成的命令文件

  • /usr/sbin :只有管理员能执行的命令
  • /usr/bin: 所有用户能够执行的命令

/ root/bin:不存在

将当前文件做个软连接放入或者使用cp复制到 /usr/local/bin目录下
直接输入脚本名执行脚本

  • 使用cp命令

Shell脚本——编程规范与echo命令

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

在/etc/profile文件最后添加:export PATH=$PATH:脚本所在的绝对路径
直接输入脚本名执行脚本

[root@Zhuzi ~]#vim /etc/profile
 
export PATH=$PATH:/root/shell  
#export使环境变量的值全局环境下生效,不加export默认在当前环境变量下生效
 
[root@Zhuzi ~]#source /etc/profile   #刷新配置文件
[root@Zhuzi ~]# echo $PATH           #查看当前路径
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/shell
[root@Zhuzi ~]# chmod +x 1.sh        #给脚本加上执行权限
[root@Zhuzi ~]#1.sh                  #输入脚本名 直接执行
hello zhuzi 

3.脚本错误调试

脚本错误种类

  • 命令错误:命令出错不会影响接下来的命令继续
  • 语法错误:会影响接下来的命令继续
  • 逻辑错误:只能自己去筛查代码的正确

检查脚本错误

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

总结:脚本错误常见的有三种区别

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

四.重定向与管道符

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

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

类型 设备文件 文件描述编号 默认设备
标准输入 /dev/stdin 0 键盘
标准输出 /dev/stdout 1 显示器
标准错误输出 /dev/stderr 2 显示器
  • 标准输入:从该设备接收用户输入的数据

  • 标准输出:通过该设备向用户输出数据

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

2.重定向具体操作

重定向就是:不通过标准输出到屏幕上,输出到你指定的位置

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

示例1:重定向输入与输出修改密码

Shell脚本——编程规范与echo命令

示例2:覆盖追加

#将12345678输入到文件log.txt中
[root@Zhuzi ~]#echo "12345678" > log.txt
[root@Zhuzi ~]#cat log.txt 
12345678
[root@Zhuzi ~]#
 
#再将112234写入log.txt中,这个时候会覆盖原来的数据
[root@Zhuzi ~]#echo "112234" > log.txt 
[root@Zhuzit ~]#cat log.txt 
112234
[root@Zhuzi ~]#
 
#继续将112234写入log.txt中,使用>>,这个时候会追加原来的数据
[root@Zhuzi ~]#echo "112234" >> log.txt 
[root@Zhuzit ~]#cat log.txt 
112234
112234

示例3:混合输出

Shell脚本——编程规范与echo命令

3.管道符

管道符号 “|”

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

3.1 使用管道符修改密码

Shell脚本——编程规范与echo命令

3.2 查看文件内容

Shell脚本——编程规范与echo命令

五.echo命令:打印输出内容

Shell脚本——编程规范与echo命令

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

\t    横向制表符

\v    纵向制表符
  • echo -n

Shell脚本——编程规范与echo命令文章来源地址https://www.toymoban.com/news/detail-450308.html

  • echo -e \b          Shell脚本——编程规范与echo命令
  • echo -e \c          Shell脚本——编程规范与echo命令
  • echo -e \n          Shell脚本——编程规范与echo命令
  • echo -e \t           Shell脚本——编程规范与echo命令
  •  echo -e \v         Shell脚本——编程规范与echo命令

到了这里,关于Shell脚本——编程规范与echo命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux命令行与Shell脚本编程】第十四章,呈现数据

    第十四章 呈现数据 1.1,标准文件描述符 文件描述符 缩写 描述 0 STDIN 标准输入 1 STDOUT 标准输出 2 STDERR 标准错误 1.1.1,STDIN 标准输入 1.1.2,STDOUT 标准输出 1.1.3,STDERR 错误输出 1.2,重定向错误 1.2.1.只重定向错误 n 1.2.2.重定向错误消息和正常输出 2.1,临时重定向 2.2,永久重定向 exec 4

    2023年04月25日
    浏览(41)
  • 【Linux命令行与Shell脚本编程】第十九章 正则表达式

    正则表达式基础 定义BRE模式 扩展正则表达式 在sed和gawk中创建正则表达式,以得到所需的数据。 正则表达式是一种可供Linux工具过滤文本的自定义模板,使用元字符来描述数据流中的一个或多个字符. Linux工具(比如sed或gawk)会在读取数据时使用正则表达式对数据进行模式匹配

    2024年02月13日
    浏览(55)
  • 【Linux命令行与Shell脚本编程】第十八章 文本处理与编辑器基础

    文本处理 学习sed编辑器 sed编辑器基础命令 gawk编辑器入门 sed编辑器基础 shell脚本可以将文本文件中各种数据的日常处理任务自动化Linux中的sed和gawk两款工具能够极大地简化数据处理任务。 想要即时处理文本文件中的文本,有一个可以自动格式化、插入、修改或删除文本元素

    2024年02月13日
    浏览(50)
  • Linux Shell 脚本编程学习之【第3章 正则表达式 (第二部分) grep命令】

    1、文本搜索工具 2、GREP 是Global search Regular Expression and Print out the line的简称,即全面搜索正则表达式并把行打印出来。 3、grep命令的模式十分灵活,可以是字符串,也可以是变量,还可以是正则表达式。模式中包含空格,则必须用双引号括起来。 选 项 意 义 -c 只输出匹配行

    2024年02月16日
    浏览(54)
  • 【 Linux命令行与Shell脚本编程】第四章 进程管理 ,磁盘统计信息,挂载新磁盘,数据排序,数据归档

    第四章 更多命令 进程管理 磁盘统计信息 挂载新磁盘 数据排序 数据归档 4.1,监测程序 4.1.1,ps 探查进程 4.1.2,top 实时监测进程 4.1.3,kill pkill 结束进程 1,kill 命令 2,pkill 命令 4.2,检测磁盘空间 4.2.1,mount umount挂载存储设备 1. mount 命令 其他选项 2,umount 命令 4.2.2, df 命令 4.2.3, du 命令

    2023年04月24日
    浏览(49)
  • Linux:概述 、安装 、文件与目录结构 、vim编辑器 、网络配置 、远程登录 、系统管理 、基础命令 、软件包管理 、克隆虚拟机 、shell编程

    2.1.1、Linux是什么? Linux是一个操作系统(OS) 所谓的操作系统就是直接用来操作计算机底层硬件的软件。 2.1.2、Linux的出现 官网: https://www.centos.org/ 进入官网进行下载 有很多的镜像,以阿里云的为例: 3.3.1、下载 官网: https://www.vmware.com/ 这是下载的企业版,30天试用期,可

    2024年02月05日
    浏览(61)
  • linux shell编程规范和变量

    目录 一、shell简述 二、shell脚本 三、重定向 四、管道符 五、变量 六、shell脚本基本知识  七、预定义变量小实验                       一、shell简述 概念:shell解释器,翻译官功能,与内核进行沟通的应用程序。 把代码翻译为二进制,让内核处理,负责接收用户输入的操

    2024年02月06日
    浏览(34)
  • Linux shell编程学习笔记44:编写一个脚本,将md5sum命令执行结果保存到变量中,进而比较两个文件内容是否相同

    在  Linux shell编程学习笔记42:md5sum https://blog.csdn.net/Purpleendurer/article/details/137125672?spm=1001.2014.3001.5501 中,我们提到编写一个在Linux系统下比较两个文件内容是否相同的脚本。 基本思路是: 其中有两个难点: 1.文件的md5值的获取 2.md5值的比较 对于第1个难点,我们的解决办法是

    2024年04月10日
    浏览(72)
  • 【Shell-HDFS】使用Shell脚本判断HDFS文件、目录是否存在

    本文主要讲述如何使用 Shell 脚本判断 HDFS 文件或目录是否存在,算是一个小技巧吧,这几天做 distcp 的时候用到的,因为要判断 HDFS 中是否存在某个目录。 Shell脚本测试: 1、测试路径是否存在。 2、测试目录是否存在。 3、测试文件是否存在。 4、测试路径大小是否大于0。

    2023年04月24日
    浏览(79)
  • shell脚本实现删除服务器指定目录下文件方法

    上述脚本中,find 命令用于查找指定目录下4天以前的文件,并将其删除。其中,-type f 表示只查找普通文件,不包括目录和符号链接等其他类型的文件;-mtime +3 表示查找修改时间早于3天前的文件;-delete 表示删除查找到的文件。 脚本中的 $folder_path 可以替换为实际的目录路径

    2023年04月19日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包