51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1757|回复: 2
打印 上一主题 下一主题

shell脚本介绍及简单用法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-2-25 15:28:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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]。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-23 09:05 , Processed in 0.070258 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表