Shell编程规范

本文深入介绍了Shell脚本的各个方面,包括其作用、应用场景、基本构成及执行方式。详细讲解了如何通过指定路径、指定解释器或直接输入脚本名来执行脚本,以及错误调试方法。此外,还阐述了标准输入输出、重定向和管道符的使用,帮助读者掌握Linux系统的自动化任务处理技巧。
摘要由CSDN通过智能技术生成

目录

1、Shell脚本概述

1.1shell的作用

1.2Shell脚本应用场景

1.3Shell脚本概念及构成

1.4脚本执行逻辑及执行方式

1.4.1指定路径去执行文件(需要有执行权限)

1.4.2指定解释器去执行(不需要权限)

1.4.3直接输入脚本名执行

1.5脚本错误调试

1.6命令echo

2、重定向与管道符

2.1标准输入与标准输出

2.2重定向操作

2.3管道符


1、Shell脚本概述

1.1shell的作用

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

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

linux中常见的shell

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

1.2Shell脚本应用场景

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

1.3Shell脚本概念及构成

Shell脚本概念

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

Shell脚本构成

  • 脚本申明(解释器):第一行开头“#!/bin/bash”,表示此行以下的代码语句是通过/bin/bash程序来解释执行。#!/bin/bash为默认的解释器,其他类型的解释器如#!/bin/python #!/bin/expect
  • 注释信息:以#开头的语句表示为注释信息
  • 可执行语句:比如echo命令用于输出“ ”之间的字符串

1.4脚本执行逻辑及执行方式

脚本执行逻辑

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

执行方式

1.4.1指定路径去执行文件(需要有执行权限)

相对或者绝对路径下系统会创建一个子shell环境,并在这个子shell环境中执行这个脚本

     当前目录为opt          ./代表本目录使用相对路径执行脚本

                                      /opt/my.sh使用绝对路径执行脚本

       当前目录为root      /opt/my.sh 使用绝对路径执行脚本 无论当前处在什么目录下都可以使用绝   对路径执行脚本

1.4.2指定解释器去执行(不需要权限)

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

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

1.4.3直接输入脚本名执行

法一:将脚本文件放入$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命令

  • 做个软连接

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

[root@localhost shell]#vim /etc/profile

export PATH=$PATH:/root/shell  //export使环境变量的值全局环境下生效,不加export默认在当前环境变量下生效

[root@localhost shell]#source /etc/profile //刷新配置文件
[root@localhost shell]# echo $PATH   //查看当前路径
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/shell
[root@localhost shell]# chmod +x first.sh //给脚本加上执行权限
[root@localhost shell]#first.sh  //输入脚本名 直接执行
hello

1.5脚本错误调试

脚本错误种类

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

检查脚本错误

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

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

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

1.6命令echo

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

\t    横向制表符

\v    纵向制表符
  • echo -n

  • echo -e \b

  • echo -e \c

  •  echo -e \n

  •   echo -e \t

 

  •    echo -e \v

2、重定向与管道符

2.1标准输入与标准输出

交互式硬件设备:

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

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

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

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

2.2重定向操作

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

  •  错误重定向输出

  • 混合输出
ls -lh &> 文件
ls -lh > 文件 2>&1
##解释第二个语句
ls -lh  标准输出 1 输出到屏幕
> 文件  1 通过>(重定向输出)到文件
2>&1    2 指向 1 (错误输出指定到标准输出) ,又此时 1 指向文件 ,所以 2 也就指向了 log.txt

 

  • 多行重定向

2.3管道符

管道符号 “|”

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

命令 | 命令
  • 使用管道符修改密码

  •  查看文件内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值