【图文教程】Shell编程

本文是一篇详尽的Shell编程教程,涵盖了从基础的shell脚本介绍、date命令,到变量、逻辑判断、循环结构,还包括文件目录属性判断、特殊用法、case判断、函数、数组等高级主题,旨在帮助读者全面掌握Shell编程技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. shell脚本介绍

讲义

1. shell是一种脚本语言 和传统的开发语言比较,会比较简单
2. shell有自己的语法;可以使用逻辑判断、循环等语法
3. 可以自定义函数,目的就是为了减少重复的代码
4. shell是系统命令的集合
5. shell脚本可以实现自动化运维,能大大增加我们的运维效率

2. shell脚本结构和执行

  • shell脚本格式
1. 开头需要加 #!/bin/bash
2. 以 # 开头的行作为解释说明
3. 脚本的名字以 .sh 结尾,用于区分这是一个 shell 脚本
  • 编辑01.sh示例
[root@test01 shell]# vi 01.sh

#!/bin/bash      #固定开头格式
#written by sc   #固定开头格式,意思是谁写的
#2019-06-17      #固定开头格式,意思是年月日
echo "123"       #打印 123
w                #查看负载
ls               #查看当前目录
  • 执行01.sh示例
[root@test01 shell]# sh 01.sh 
123
 19:46:25 up  2:41,  2 users,  load average: 0.05, 0.03, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.85.1     16:47    2:16m  0.07s  0.01s vi 01.sh
root     pts/1    192.168.85.1     19:43    1.00s  0.11s  0.00s sh 01.sh
01.sh
  • 执行脚本有两种方法
方法一:

/bin/sh实际是bash的软连接;其实是真正执行的是bash

[root@test01 shell]# ls -l /bin/bash
-rwxr-xr-x. 1 root root 964608 Oct 31  2018 /bin/bash
[root@test01 shell]# ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 Mar 19 07:53 /bin/sh -> bash
[root@test01 shell]# bash 01.sh 
123
 09:46:46 up 39 min,  1 user,  load average: 0.30, 0.16, 0.10
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.85.1     09:33    6.00s  0.10s  0.00s w
01.sh


方法二:

[root@test01 shell]# chmod a+x 01.sh    #增加执行权限
[root@test01 shell]# ./01.sh            #可执行脚本        
123
 22:03:55 up  4:59,  1 user,  load average: 0.02, 0.04, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/1    192.168.85.1     19:43    3.00s  0.09s  0.00s /bin/bash ./01.sh
01.sh
  • 查看脚本执行过程:bash -x 脚本名称
[root@test01 shell]# sh -x 01.sh 
 + echo 123
123
 + w
 09:40:43 up 33 min,  1 user,  load average: 0.00, 0.02, 0.06
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.85.1     09:33    3.00s  0.08s  0.01s w
 + ls
01.sh
  • 查看脚本是否语法错误: bash -n 脚本名称
[root@test01 shell]# vim 01.sh 

#!/bin/bash
echo "123  #注意:为了测试 bash -n 把123右侧的双引号去掉
w
ls

[root@test01 shell]# sh -n 01.sh  #执行脚本
01.sh: line 2: unexpected EOF while looking for matching `"'  #检查完以后显示语法是错的
01.sh: line 5: syntax error: unexpected end of file

3. date命令用法

  • 时间格式用法
时间格式举例:

[root@test01 shell]# date +%Y  #大写Y 年份2019
2019
[root@test01 shell]# date +%y  #小写y 简写的年 年份19
19
[root@test01 shell]# date +%m  #小写m 月份06
06
[root@test01 shell]# date +%M  #分钟22
22
[root@test01 shell]# date +%d  #日期16
16
[root@test01 shell]# date +%D  #年月日20190616
06/16/19
[root@test01 shell]# date +%F  #日期格式2019-06-16
2019-06-16
[root@test01 shell]# date +%H  #大写H 小时11
11
[root@test01 shell]# date +%h  #小写h 英文的月
Jul
[root@test01 shell]# date +%S  #大写S54
54
[root@test01 shell]# date +%T=date +%H:%M:%S  #常规时间11:42:40
11:42:40 
[root@test01 shell]# date +%w  #星期几0
0
[root@test01 shell]# date +%W  #今天是今年的第2323


日历:

[root@test01 shell]# cal  #显示当月日历
      June 2019     
Su Mo Tu We Th Fr Sa
                   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@test01 TD]# cal 11 2019  #显示指定月年
    November 2019   
Su Mo Tu We Th Fr Sa
                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@test01 shell]# date +%s  #小写s 时间戳1560656445
1560656445 
[root@test01 shell]# date -d @1560656445
Sun Jun 16 11:40:45 CST 2019
[root@test01 shell]# date +%s -d "2019-06-16 11:40:45"
1560656445
  • date -d选项用法
-1+1 年月日举例:

[root@test01 shell]# date -d "-1 day" +%F    #一天前
2019-06-15
[root@test01 shell]# date -d "+1 day" +%F    #一天后
2019-06-17
[root@test01 shell]# date -d "-1 week" +%F   #一周前
2019-11-11
[root@test01 shell]# date -d "+1 week" +%F   #一周后
2019-11-25
[root@test01 shell]# date -d "-1 month" +%F  #一月前
2019-05-16
[root@test01 shell]# date -d "+1 month" +%F  #一月后
2019-07-16
[root@test01 shell]# date -d "-1 year" +%F   #一年前
2018-06-16
[root@test01 shell]# date -d "+1 year" +%F   #一年后
2020-06-16


-1+1 小时分钟举例:

[root@test01 shell]# date -d "-1 hour" +%T   #一小时前
11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值