shell基础一

20.1 Shell脚本介绍

20.2 Shell脚本结构和执行

20.3 date命令用法

20.4 Shell脚本中的变量

20.5 Shell脚本中的逻辑判断

20.6 文件目录属性判断

 

 

 

 

 

 

 

20.1 Shell脚本介绍

shell是一种脚本语言

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

可以自定义函数

shell是系统命令的集合

shell脚本可以实现自动化运维,能打打增加我们的运维效率

 

 

20.2 Shell脚本结构和执行

Shell脚本开头需要加上#!/bin/bash   相当于解析器

#!/bin/bash   //第一行也可以不要,但是是用于本机,这里的特殊意义是接下来用的命令是哪个解释器

         echo "123"

         w

         ls

相当于执行了3次命令

并且相当于是用/bin/bash去解析

也可以用

bash 01.sh

sh -x 01.sh //注意只有sh -x可以看到是多少行进行了什么脚本

[root@localhost shell]# /root/shell/01.sh   等命令来执行

也可以用这种方式

[root@localhost shell]# chmod a+x 01.sh

[root@localhost shell]# ./01.sh

 

shell文件中也可以加上时间,用#号就行,代表一些描述性文字

 

[root@localhost shell]# sh -n 01.sh                   //sh -n可以查看语法错误

 

 

20.3 date命令用法

直接使用date,显示时间,日期

[root@localhost shell]# date

2018年 10月 24日 星期三 22:24:52 CST

[root@localhost shell]# date +%Y   //年

2018

[root@localhost shell]# date +%y   //年

18

[root@localhost shell]# date +%m //月

10

[root@localhost shell]# date +%M //日

28

[root@localhost shell]# date +%d //分钟

24

[root@localhost shell]# date +%D //月日年

10/24/18

[root@localhost shell]# date +%Y%m%d

20181024

[root@localhost shell]# date +%F   //格式不一样

2018-10-24

cal查看日历

-d一天前

[root@localhost shell]# date -d "-1 day"

Tue Oct 23 22:36:56 CST 2018

[root@localhost shell]# date -d "-1 day" +%F

2018-10-23

[root@localhost shell]# date -d "-1 month" +%F    //一个月以前

2018-09-24

时间戳,用于标记

[root@localhost shell]# date +%s

1540391925

[root@localhost shell]# date -d @1540391925

Wed Oct 24 22:38:45 CST 2018

 

 

20.4 Shell脚本中的变量

 

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

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

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

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

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

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

 

 

20.5 Shell脚本中的逻辑判断

Shell脚本中逻辑脚本

-gt (>);    大于    great than

-lt(<);      小于     less than

-ge(>=);  大于或等于  

-le(<=);   小于或等于

-eq(==);  等于     equal

-ne(!=)    不等于  not equa

&&并且      ||或者    ---- if [] &&[]then   结合判断

逻辑判断有三种写法

格式一:if 条件 ; then 语句; fi

格式二:if 条件; then 语句; else 语句; fi

格式三:if ; then ;elif ; then ; else ; fi

 

格式一

cat 02.sh

#!/bin/bash

a=5

if [ $a -gt 3 ]       //判定条件是否大于3

#注意[ ]必须有空格

then

       echo "ok"

fi

第二种

else

echo "nook"   //否则nook

第三种

#!/bin/bash

a=3                   //这里把a定义到3

if [ $a -gt 4 ]

#注意[]必须有空格

then

       echo ">1"

elif [ $a -gt 6 ]

then

         [ $a -gt 6 ]

# 这里可以多重条件

else

    echo "nook"

fi

 

 

20.6 文件目录属性判断

Shell中经常和文件和目录打交道,对于文件或者目录的属性判断很重要

[ -f file ]判断是否是普通文件,且存在     [ -f /usr/bin/grep ]

[ -d file ] 判断是否是目录,且存在   [ -d /tmp/mydir ]

[ -e file ] 判断文件或目录是否存在   [ -e /var/log/syslog ]

[ -r file ] 判断文件是否可读   [ -r /var/log/syslog ]

[ -w file ] 判断文件是否可写  [ -w /var/mytmp.txt ]

[ -x file ] 判断文件是否可执行  [ -x /usr/bin/grep ]

 

举例

[root@localhost shell]# vim file1.sh        //创建一个

#!/bin/bash

f="/tmp/zhaoxiang-linux"

if [ -e $f ]

then

       echo $f exist

else

      touch $f

fi

执行之后,查看过程

[root@localhost shell]# sh -x file1.sh

+ f=/tmp/zhaoxiang-linux

+ '[' -e /tmp/zhaoxiang-linux ']'

+ touch /tmp/zhaoxiang-linux

发现这里进行了三步

更改一下

[root@localhost shell]# cat file2.sh

#!/bin/bash

f="/tmp/zhaoxiang-linux"

if [ -d $f ]

then

       echo $f exist

else

      touch $f

fi

判定一下是否是目录,这里没有目录,所以touch一个

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值