第六章 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.shell的作用

Linux 系统中的 Shell 是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。通过/etc/shells 文件可以了解当前系统所支持的 Shell 脚本种类。

3.查看本机的shell信息

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

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命令,按执行顺序一次编写

脚本申明(解释器):第一行开头“#!/bin/bash”,表示此行以下的代码语句是通过/bin/bash程序来解释执行。#!/bin/bash为默认的解释器,其他类型的解释器如#!/bin/python #!/bin/expect

注释信息:以#开头的语句表示为注释信息

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

三. Shell脚本的执行

1.脚本执行逻辑

  • 顺序执行:程序按从上到下顺序执行

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

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

2.Shell脚本的执行方法

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

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

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

bash 1.sh

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

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

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

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

/usr/local/sbin:只有管理员能执行的命令

/usr/local/bin :所有用户能够执行的命令

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

/usr/sbin :只有管理员能执行的命令

/usr/bin: 所有用户能够执行的命令

/ root/bin:不存在

将当前文件做个软连接放入或者使用cp复制到 /usr/local/bin目录下

直接输入脚本名执行脚本

  • 使用cp命令

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

在/etc/profile文件最后添加:export PATH=$PATH:脚本所在的绝对路径

直接输入脚本名执行脚本

vim /etc/profile

export PATH=$PATH:/root/shell

#export使环境变量的值全局环境下生效,不加export默认在当前环境变量下生效

source/etc/profile #刷新配置文件

echo $PATH #查看当前路径

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/shell

chmod +x 1.sh #给脚本加上执行权限

  1. sh #输入脚本名 直接执行

3.脚本错误调试

脚本错误种类

命令错误:命令出错不会影响接下来的命令继续

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

逻辑错误:只能自己去筛查代码的正确

检查脚本错误

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

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

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

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

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

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

四.重定向与管道符

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

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

类型设备文件文件描述编号默认设备

标准输入/dev/stdin0键盘

标准输出/dev/stdout1显示器

标准错误输出/dev/stderr2显示器

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

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

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

2.重定向具体操作

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

类型操作符用途

重定向输入<从指定的文件读取数据,而不是从键盘输入

重定向输出>将输出结果保存到指定的文件(覆盖原有内容)

重定向输出>>将输出结果换行添加在文件尾部

重定向错误输出2>将错误信息保存到指定的文件(覆盖原有内容)

重定向错误输出2>>将错误信息追加到指定的文件中

混合输出&>将标准输出、标准错误的内容保存到同一个文件中

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

echo '123123' > passwd.txt

passwd --stdin zhuo < passwd.txt

示例2:覆盖追加

#将12345678输入到文件log.txt中

#echo "12345678" > log.txt

#再将112234写入log.txt中,这个时候会覆盖原来的数据

#echo "112234" > log.txt

#继续将112234写入log.txt中,使用>>,这个时候会追加原来的数据

#echo "112234" >> log.txt

示例3:混合输出

3.管道符

管道符号 “|”

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

3.1 使用管道符修改密码

3.2 查看文件内容

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

echo cxk

选项

作用

-n

不追加换行

-e

\b 退格

\c 抑制更多的输出

\n 换行

\t 横向制表符

\v 纵向制表符

echo -e \b

echo -e\c

echo -e \n

echo -e \t

echo -e \v

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值