码迷,mamicode.com
首页 > 系统相关 > 详细

Shell编程(一)

时间:2018-04-18 11:52:21      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:shell脚本;   脚本结构和执行   date用法   shell脚本变量   

[toc]

shell编程

一、shell 脚本介绍

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
shell是一种脚本语言;
可以使用逻辑判断、循环等语法;
可自定义函数;
shell是系统命令的集合;
shell脚本可以实现自动化运维,能大大增加我们的运维效率;

说明了shell 脚本在工作的重要性,shell脚本就是一些命令的集合,是自动化运维的重要部分

二、 Shell脚本结构和执行

下面跟着步骤来一步步学习如何写shell脚本

2.1 创建shell脚本实验环境

[root@localhost ~]# mkdir shell
[root@localhost ~]# cd shell/
[root@localhost shell]# ls
[root@localhost shell]# vi 01.sh

shell脚本通常都是.sh为后缀名,但不是说不加.sh的脚本就不能执行,只是大家的一个习惯而已,所以如果发新了以.sh为后缀的文件,那么它可能就是一个shell脚本.

技术分享图片

本例中,脚本文件01.sh,进入编辑状态后,第一行要以#!/bin/bash开头,表示该文件使用的是bash语法.而/bin/bash是Bash的解释器命令路径.

2.2 执行该脚本 #sh.01.sh

[root@localhost shell]# sh 01.sh
123
 22:43:14 up 25 min,  1 user,  load average: 0.00, 0.01, 0.01
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.72.1     22:26    2.00s  0.08s  0.00s w
01.sh

把#!/bin/bash这一行删除,运行命令后也能执行但这样不符合规范.

技术分享图片

2.3 另一种方法执行该脚本 #./01.sh

使用该方法运行shell脚本的前提是脚本本身有执行权限,需要给脚本加x权限

[root@localhost shell]# chmod +x 01.sh
[root@localhost shell]# ./01.sh
123
 23:18:34 up  1:01,  1 user,  load average: 0.00, 0.01, 0.03
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.72.1     22:26    2.00s  0.11s  0.01s w
01.sh

2.4 查看解释路径/bin/bash和/bin/sh

技术分享图片

[root@localhost shell]#  bash 01.sh
123
 23:37:15 up  1:19,  1 user,  load average: 0.00, 0.01, 0.03
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.72.1     22:26    3.00s  0.20s  0.01s w
01.sh

这里是否可以理解有三种方法都可以执行shell脚本,但是本机验证成功,不代表其他机器虚拟机是否成功,后续测试

2.5 举例脚本的编辑方式,注释等

[root@localhost shell]# vi /etc/init.d/network

#! /bin/bash
#
# network       Bring up/down networking
#
# chkconfig: 2345 10 90
# description: Activates/Deactivates all network interfaces configured to #              start at boot time.
#

技术分享图片

2.6 sh -x 查看shell脚本执行过程,方便后续调试

[root@localhost shell]# sh -x 01.sh
+ echo 123
123
+ w
 23:40:21 up  1:22,  1 user,  load average: 0.00, 0.01, 0.03
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.72.1     22:26    5.00s  0.22s  0.01s w
+ ls
01.sh
[root@localhost shell]# bash -x 01.sh
+ echo 123
123
+ w
 23:40:29 up  1:23,  1 user,  load average: 0.00, 0.01, 0.03
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.72.1     22:26    5.00s  0.21s  0.00s w
+ ls
01.sh

2.7 sh -n 检测shell脚本是否有语法错误

技术分享图片

三、date命令用法

date命令用于显示或设置系统时间与日期。
命令选项:

[root@xavi ~]# date  //当前日期
2018年 04月 17日 星期二 22:06:22 CST
[root@xavi ~]# cal  //当前日历
      四月 2018     
日 一 二 三 四 五 六
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

[root@xavi ~]# date +%Y  //年
2018
[root@xavi ~]# date +%y  //年缩写
18

[root@xavi ~]# date +%m  //月
04

[root@xavi ~]# date +%Y%m%d //年月日
20180417

[root@xavi ~]# date +%F
2018-04-17

[root@xavi ~]# date +%H  //小时
22
[root@xavi ~]# date +%M   //分钟
23
[root@xavi ~]# date +%S   //秒
10

[root@xavi ~]# date +%s  //时间戳,时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒
1523975099

[root@xavi ~]# date +%T //时间的完整显示
22:27:04

[root@xavi ~]# date "+%Y-%m-%d %H:%M:%S %w" // 年月日,时分秒,星期  
2018-04-17 22:20:50 2

[root@xavi ~]# date -d "-1 day"
2018年 04月 16日 星期一 22:31:20 CST
[root@xavi ~]# date -d "-1 day" +%F
2018-04-16

[root@xavi ~]# date -d "-1 month" +%F
2018-03-17
[root@xavi ~]# date -d "-1 year" +%F
2017-04-17
[root@xavi ~]# date -d "-1 hour" +%T
21:44:30

[root@xavi ~]# date +%s -d "2018-04-17 22:46"  //  日期转化为时间戳
1523976360

四、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] 

Shell编程(一)

标签:shell脚本;   脚本结构和执行   date用法   shell脚本变量   

原文地址:http://blog.51cto.com/12995218/2104755

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!