51Testing软件测试论坛

标题: shell脚本介绍及简单用法 [打印本页]

作者: 小小糖    时间: 2019-2-25 15:28
标题: shell脚本介绍及简单用法
1.shell脚本介绍

       shell脚本并不能作为正式的编程语言,因为它是在Linux的shell中运行的,所有称为shell脚本。

shell是一种脚本语言;

可以使用逻辑判断、循环等语法;

可以自定义函数;

shell是系统命令的集合;

shell脚本可以实现自动化运维,能大大增加我们的运维效率;
2.shell脚本结构和执行方法

shell脚本开头需要加#!/bin/bash;

以#开头的行作为解释说明;

脚本的名字以.sh结尾,用于区分这是一个shell脚本;

  1. [root@yuioplvlinux-128 ~]# cd /usr/local/sbin/
  2. [root@yuioplvlinux-128 sbin]# vim first.sh
  3. cat first.sh
  4. #! /bin/bash
  5. echo "Hello World!"
  6. w
  7. [root@yuioplvlinux-128 sbin]# sh first.sh
  8. Hello World!
  9. 20:56:06 up 15:37,  1 user,  load average: 0.03, 0.04, 0.05
  10. USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
  11. root     pts/0    gateway          20:20    6.00s  0.03s  0.01s w
复制代码

执行方法有两种,给脚本添加x权限后,“./first.sh”;

  1. [root@yuioplvlinux-128 sbin]# chmod +x first.sh
  2. [root@yuioplvlinux-128 sbin]# ./first.sh
  3. Hello World!
  4. 20:57:03 up 15:38,  1 user,  load average: 0.01, 0.04, 0.05
  5. USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
  6. root     pts/0    gateway          20:20    7.00s  0.03s  0.00s w
复制代码

还有一种是“bash first.sh”;

  1. [root@yuioplvlinux-128 sbin]# bash first.sh
  2. Hello World!
  3. 20:57:28 up 15:38,  1 user,  load average: 0.01, 0.03, 0.05
  4. USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
  5. root     pts/0    gateway          20:20    0.00s  0.05s  0.01s w
复制代码

sh命令执行一个shell脚本时,可以加-x选项查看脚本执行过程,-n选项查看脚本是否语法错误。

  1. [root@yuioplvlinux-128 sbin]# sh -x first.sh
  2. + echo 'Hello World!'
  3. Hello World!
  4. + w
  5. 20:58:35 up 15:39,  1 user,  load average: 0.00, 0.03, 0.05
  6. USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
  7. root     pts/0    gateway          20:20    3.00s  0.05s  0.00s w
  8. [root@yuioplvlinux-128 sbin]# sh -n first.sh
复制代码
3.date命令

date命令的用法如下:

date +%Y-%m-%d, date +%y-%m-%d-年月日;

  1. [root@yuioplvlinux-128 ~]# date +%Y-%m-%d
  2. 2018-07-11
  3. [root@yuioplvlinux-128 ~]# date +%y-%m-%d
  4. 18-07-11
复制代码

date +%H:%M:%S,date +%T-小时分钟秒;

  1. [root@yuioplvlinux-128 ~]# date +%H:%M:%S
  2. 21:21:26
  3. [root@yuioplvlinux-128 ~]# date +%T
  4. 21:21:41
复制代码

date +%s-时间戳,表示从1970年00:00:00过去了多少秒;

  1. [root@yuioplvlinux-128 ~]# date +%s
  2. 1531315325
复制代码

date -d @1531316090;

  1. [root@yuioplvlinux-128 ~]# date +%s -d "2018-07-11 21:34:50"
  2. 1531316090
  3. [root@yuioplvlinux-128 ~]# date -d @1531316090
  4. Wed Jul 11 21:34:50 CST 2018
复制代码

date -d "+1day"-一天后;

  1. [root@yuioplvlinux-128 ~]# date -d "+1day"
  2. Thu Jul 12 21:22:26 CST 2018
复制代码

date -d "-1day"-一天前;

  1. [root@yuioplvlinux-128 ~]# date -d "-1day"
  2. Tue Jul 10 21:22:54 CST 2018
复制代码

date -d "-1month"-一月前;

  1. [root@yuioplvlinux-128 ~]# date -d "-1month"
  2. Mon Jun 11 21:23:19 CST 2018
复制代码

date -d "-1min"-一分钟前;

  1. [root@yuioplvlinux-128 ~]# date -d "-1min"
  2. Wed Jul 11 21:22:36 CST 2018
复制代码

4.shell脚本中的变量

当脚本中使用某个字符串较频繁并且字符串长度很长时就应该使用变量代替;

使用条件语句时,常使用变量    if [ $a -gt 1 ]; then ... ; fi;

引用某个命令的结果时,用变量替代   n='wc -l 1.txt'

写和用户交互的脚本时,变量也是必不可少的  read -p "Input a number: " n; echo $n   如果没写这个n,可以直接使用$REPLY;

内置变量 $0, $1, $2…    $0表示脚本本身,$1 第一个参数,$2 第二个 ....       $#表示参数个数;

数学运算a=1;b=2; c=$(($a+$b))或者$[$a+$b]。



作者: qqq911    时间: 2019-4-16 11:04
感谢分享
作者: Miss_love    时间: 2020-12-25 16:11
感谢分享




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2