作用与应用场景

 

用途

  • 自动化常用命令
  • 执行系统管理和故障排除
  • 创建简单的应用程序
  • 处理文本或文件

应用场景

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

常见的shell

查看/etc/shells,里面是linux包含的shell

 

 

 

bash是大多linux版本默认的shell

基本结构

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

 

 

shell脚本的执行

1、指定路径去执行文件,文件需要有执行权限。

chmod +x AAA.sh

绝对路径:/root/mzs/AAA.sh

相对路径:./AAA.sh

 

 

2、指定解释器去执行(bash 脚本名),不需要执行权限。

bash 脚本路径

sh 脚本路径

 

 

 

source 脚本路径(source可以用 . 代替)

source命令是一个内置的shell命令,用于从当前shell会话中的文件读取和执行命令。source命令通常用于保留、更改当前shell中的环境变量。简而言之,source一个脚本,将会在当前shell中运行execute命令。

sh,bash、绝对路径、相对路径 执行脚本时,会创建一个子shell环境,并在这个子shell环境中执行脚本。

source和 . 执行脚本时,会在当前shell环境中执行脚本

错误调试

  1. 命令错误: 命令错误不会影响接下来的命令,之后的命令会继续执行。
  2. 语法错误: 会导致后续的命令不执行。造成脚本中一部分命令已执行,一部分未执行。
  3. 逻辑错误: 执行后的效果不是自己想要的。需要自己去排查

bash -n 脚本名称 //只检查语法错误,不真正执行脚本。定位的错误行可能不准确。

bash -x 脚本名称 //显示每个命令的执行过程,方便发现逻辑错误

重定向与管道操作

交互式硬件设备

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

标准输出:通过该设备向用户输出数据         /dev/stdout  1

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

重定向操作

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

管道符

x1 |  x2     链接多个命令,把命令x1的结果作为命令x2的操作对象

如果管道符合右边是一定需要执行对象的命令,则管道符号 后面要有 xargs 命令来传递执行参数 (x1 |  xargs x2)

shell变量

自定义变量

sheLl脚本给变量赋值的方式

变量名=变量值

例:name=1

查看变量的值:

echo &变量名

unset可以取消变量  例 :unset name

赋值时使用引号

双引号” “:会把引号的内容当成整体来看待。强引用,识别变量,允许通过$符号引用其他变量值。 ​

 单引号’ ‘:会把引号的内容当成整体来看待。弱引用,禁止引用其他变量值,单引号内的内容都会被认为是普通字符。 ​

 反撇号` ` 和 $() :调用命令执行后输出的结果。如果存在嵌套,不能使用反撇号。 ​

 花括号{ } :定义变量范围。 echo <span class=”katex”><span class=”katex-mathml”>color{color}<span class=”katex-html”><span class=”base”><span class=”strut”><span class=”mord”><span class=”mord mathnormal”>c<span class=”mord mathnormal”>o<span class=”mord mathnormal”>l<span class=”mord mathnormal”>o<span class=”mord mathnormal”>r{price}

 

 

read命令

一:read  -p  “提示信息”  变量名

echo  $变量名

二:在脚本中编写,在命令行实现read获取

 

 

 

 

整数变量的运算

expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串

 

 

 运算符:+ 加法、- 减法、* 乘法、/ 除法、% 取余

 

 

 

 

$( )和反撇号,可以调用命令的执行结果。

 

 

 

小数运算(浮点数运算)

bc计算

echo “浮点运算表达式” | bc

 

 

awk计算

awk “BEGIN{print 算术表达式}”

 

 

特殊的shell变量

环境变量

由系统提前创建,用来设置用户的工作环境 

配置文件:/etc/profile(全局生效)、~/.bash_profile(当前用户环境)

常见环境变量

env PATH HOME PWD USER

使用 env 命令可以查看到当前工作环境下的环境变量 

变量USER表示用户名称,

HOME表示用户的宿主目录,

LANG表示语言和字符集,

PWD表示当前所在的工作目录,

变量PATH表示可执行程序的默认搜索路径

 

 

 

(已经将该目录添加到路径环境变量中,目录内的所有具有执行权限的文件,都可以在当前环境任何目录中执行)

只读变量

用于变量值不允许被修改的情况

readonly  命令设置只读变量

只读变量不可以重新赋值

 

 

位置变量

当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量。

n:n为数字,n:n为数字,nn,0代表命令本身,1~9代表第一个到第九个参数,十以上的参数需要使用大括号表示,比如第十个参数为 ${10}

 

 

 

 

预定义变量

$#:表示命令行中位置参数的个数,传递到脚本的参数个数 

 @:与@:与@与*相同,@以”@以”@“1” “2 ” … ” 2″ … “2”…”n” 的形式输出所有参数 

$?:显示上一条命令的退出状态;0表示没有错误,其他任何值表明有错误

$0:脚本本身

日期

date +%F显示现在日期

date +%Y -%m-%d 年月日

date +%T 显示时间 HMS几点几分几秒

-%H 为小时

%w 周几

date -d “-1day” 一天之前

date -d “1day” 一天之后

 

原文地址:http://www.cnblogs.com/ponyton/p/16817898.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性