day28shell编程光速入门

2019-04-09  本文已影响0人  国王12

1.为什么要学shell编程?

linux系统中会大量使用shell,工作中也会自动化实现业务,列如自动备份,监控,批量安装

shell编程是必须要会的,也是最简单的编程语言。是运维人员具备的基本本领

2.什么是shell?

  shell就是一个解释器,命令行的命令以及脚本,都会通过shell解释,传给操作系统,再传给用户

解释器是在创建用户是指定的解释器  useradd  -s  指定解释器

3.shell的分类 (CentOs7支持的解释器)

[root@king ~]# cat /etc/shells

/bin/sh

/bin/bash

/usr/bin/sh

/usr/bin/bash

很多都淘汰了,现在默认bash

4.Centos7默认/bin/bash解释器

5.什么是shell脚本?

把程序,命令放在文件里执行,这个文件就称之为shell脚本文件

工作中最多的就是编程写脚本,然后存放在文件里。

书写脚本编程习惯:

1.以.sh结尾

2.脚本开头第一行 #!/bin/bash  脚本内容有谁解释。

  由于linux下默认是bash,所以不写也一样

3.

6.shell的变量:

  a. 全局变量(环境变量)

  在整个系统中生效,一般是大写,系统中默认存在一些这样的变量

自定义环境变量:

export OLDBOY="I am oldboy."  将其放到/etc/profile  或者/etc/bashrc  推荐后者

b.局部变量(普通变量)

是编写shell脚本最常用的变量

变量名=值

a=1

变量名:数字、字母、下划线,不能以数字开头

= 等号 ,在这里叫赋值符,把什么东西给谁谁  赋值符号两边不能有空格

值: 东西,变量内容

  引用内容的符号    :单引号、双引号、反引号(可以解析命令)、不加引号

a=1

let  y="$a+1"

echo $y  即输出的是1+1=2,let 是让y的环境变量里自动相加  不加let ,结果就是1+1

7.表达式

【  表达式  】  中括号表达式

在这里,中括号里的内容根中括号两边都得有空格,

字符串要加双引号

[ "a" = "a" ] && echo 1 ||echo 0

如果成立,打印1,不成立则打印0      &&前边成立,这边输出,不成立,不输出(跟屁虫)

                                                            || 前边成立,这边不输出,前边不成立,这边输出(杠精)

整数表达式:

>  -gt

>=  -ge

<    -lt

<=  -le 

不等于  -ne 

等于  -eq

1)整数表达式符,两端必须有空格

2)中括号里边两端必须有空格

3)变量和比较的内容,不需要加引号

4)字符串需要加双引号

字符表达式:

-z  变量内容长度为0时,为真(正确)。zero

-n    变量内容长度【不】为0时,为真(正确)。not zero

a == a 字符串是否相同

说明:

1)字符串要加双引号

判断句:

如果 。。。。。那么。。。。。。

a=

(变量)

if  [  表达式  ]

then

(那么)

      echo

elif

(要么/或者)

        echo

else

(否则)

      echo

  fi

read 命令 读取用户 输入

-p  "提醒(请你输入什么什么):" 空格  内容

-t    “多长时间内等待输入”

9.for循环

for n in 取值列表

do

    执行命令

done

课后练习;

1.比较整数大小

[root@king ~]# cat 1.sh

#! /bin/bash

read -p "请输入两个正整数,我帮你比大小:" a b

if [ $a -gt $b ]

then

    echo "a>b"

elif [ $a -eq $b ]

then

    echo "a=b"

else

    echo "a<b"

fi

[root@king ~]#

2.每周六日区旅游,其他时间上课

[root@king ~]# cat 2.sh

#! /bin/bash

if [ $(date +%w) == 6 ]

then

    echo "去旅游"

else

    echo "滚回去上课"

fi

[root@king ~]#

3.取出当前系统IP地址,判断是否为10.0.0.31,如果是,提示正确,反之,提示错误

ip add|sed -nr 's#.*inet (.*)/24 brd.*$#\1#gp'

[root@king ~]# cat 3.sh

#! /bin/bash

a="$(ip add|sed -nr 's#.*inet (.*)/24 brd.*$#\1#gp')"

if [ "$a" == "10.0.0.31" ]

then

    echo "正确"

else

    echo "错误"

fi

[root@king ~]#

4.打印10.0.0.1--10.0.0.254 共254个IP ,当IP为系统IP时,给出该IP时系统IP的提示提示

[root@king ~]# cat 4.sh

#! /bin/bash

for n in 10.0.0.{1..254}

do

  echo $n

if [ $n == "10.0.0.201" ]

then

    echo "此IP为系统IP"

fi

done

上一篇 下一篇

猜你喜欢

热点阅读