Day 28 课堂笔记

shell编程基础

1、为什么要学shell编程?

           linux系统中会大量得使用shell,工作中也需要自动化来实现业务。比如:自动备份、监控、批量安装服务等。

            shell编程时linux运维人员必须要会得编程语言。最简单得变成语言。

            编程也是运维人员必须具备得本领:  shell  、Python

2、什么时shell?

           shell就是一个解释器(翻译官),命令行得命令以及脚本都会通过shell解释,传给操作系统,处理后在输出给客户。shell是创建用户时,系统指定 得翻译官。

3、shell得分类

1.Bourne    shell

        Bourne shell又包括Bourne shell (sh)、Korn shell (ksh)、Bourne Again Shell(bash)三种类型。

2. C shell

    C shell又包括csh、tcsh两种类型。

    C7支持得shell

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

/bin/sh

/bin/bash

/usr/bin/sh

/usr/bin/bash

4、C7默认的shell

        /bin/bash

5、什么时shell脚本?

程序、命令放入文件里执行,这个文件称之为shell脚本文件。

工作中最多的编写脚本,存放在文件里。

6、shell 的变量:

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

在整个系统中生效、一般是大写、系统中默认存在一些这样的变量,用于满足系统和程序运行的需求。

1.系统自带的环境变量:

[root@oldboyedu ~]# echo $PS1

[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\] \[\e[31;1m\]\w\[\e[0m\]]\$

[root@oldboyedu ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@oldboyedu ~]# echo $HOME

/root

2.自定义环境变量:

方法一

export OLDBOY="I am oldboy."

方法2:

OLDBOY="I am oldboy."

export OLDBOY

[root@oldboyedu ~]# export OLDBOY="I am oldboy."

[root@oldboyedu ~]# echo $OLDBOY

I am oldboy.

/etc/profile ==> ~/.bash_profile ===>~/.bashrc ==>/etc/bashrc

推荐以后把环境变量放入/etc/bashrc

安装java服务的时候就会配置环境变量。

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

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

变量名=值

例如:a = 1

要求:

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

=  等号: 赋值符,把什么东西给谁。 赋值符两边不能有空格

值 :东西,变量内容。

     引用内容的符号:单引号、双引号、反引号、不加引号

以下举例说明:

[root@oldboyedu ~]# a=1

[root@oldboyedu ~]# echo $a

1

[root@oldboyedu ~]# y=$x+1

[root@oldboyedu ~]# echo $y

1+1

[root@oldboyedu ~]# y="$x+1"

[root@oldboyedu ~]# echo $y

1+1

[root@oldboyedu ~]# y='$x+1'

[root@oldboyedu ~]# echo $y

$x+1

[root@oldboyedu ~]# y=`$x+1`

-bash: 1+1: command not found

[root@oldboyedu ~]# let y="$x+1"  #<==让括号的内容进行计算。

[root@oldboyedu ~]# echo $y

2

[root@oldboyedu ~]# a=1

[root@oldboyedu ~]# echo ${a}b

1b

7、表达式

[   ] 中括号表达式,中括号两端必须要有空格。

字符串要加双引号

[root@oldboyedu ~]# [ "a" = "b" ] && echo 1||echo 0

0

整数表达式:

>                -gt

>=              -ge

<                -lt

<=              -le

=               -eq

不等于      -ne

例如:

[root@oldboyedu ~]# a=5

[root@oldboyedu ~]# echo $a

5

[root@oldboyedu ~]# [ $a -gt 3 ] && echo 1||echo 0

1

[root@oldboyedu ~]# [ $a -ge 5 ] && echo 1||echo 0

1

[root@oldboyedu ~]# [ $a -lt 5 ] && echo 1||echo 0

0

[root@oldboyedu ~]# [ $a -le 5 ] && echo 1||echo 0

1

[root@oldboyedu ~]# [ $a -ne 5 ] && echo 1||echo 0

0

注意点:

1)整数表达式符  两端要有空格

2)中括号里面两端要有空格。

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

字符表达式:

-z  变量内容长度为0时,为真(表达式正确的意思)。zero

-n   变量内容长度不为0时,为真(表达式正确的意思)。 not zero

a == a  字符串是否相同

说明:

1) 字符要加双引号

例子:

[root@oldboyedu ~]# oldboy="I am oldboy"

[root@oldboyedu ~]# [ -z "$oldboy" ] && echo 1 || echo 0

0

[root@oldboyedu ~]# oldboy=""

[root@oldboyedu ~]# [ -z "$oldboy" ] && echo 1 || echo 0

1

[root@oldboyedu ~]# [ -n "$oldboy" ] && echo 1 || echo 0

0

[root@oldboyedu ~]# [ "test" == "host" ] && echo 1 || echo 0

0

[root@oldboyedu ~]# [ "test" == "test" ] && echo 1 || echo 0

1

8、shell 判断句:

1.if  判断句语法:

if  [ 表达式 ]

then   命令

fi   

2.实现多条件:

if [ $(date +%w) -eq 6 ]||[ $(date +%w) -eq 0 ]

then

    echo "一起去旅游"

else

    echo "还是好好上课吧"

fi

3.read 命令

 交互式读取用户输入

-p ”提醒:“

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

4.简单举例说明:

[root@oldboyedu ~]# read -p "请输入一句话:" boy    ====》写好脚本执行后的结果

请输入一句话:潜力股

[root@oldboyedu ~]# echo $boy

潜力股

9、for 循环

1.语法格式:

for n in 取值列表

do

执行命令

done

2.例子:

[root@oldboyedu ~]# cat for1.sh ====》脚本内容

for n in 1 2 3 4 5

do

    echo $n

done

[root@oldboyedu ~]# sh for1.sh   =====》运行脚本后输出内容

1

2

3

4

5

[root@oldboyedu ~]# sh -x for1.sh======》 显示执行过程

+ for n in 1 2 3 4 5

+ echo 1

1

+ for n in 1 2 3 4 5

+ echo 2

2

+ for n in 1 2 3 4 5

+ echo 3

3

+ for n in 1 2 3 4 5

+ echo 4

4

+ for n in 1 2 3 4 5

+ echo 5

5


书写脚本的习惯:

1、以 .sh结尾

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

由于linux 下默认是bash ,所以也可以不写这一行

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 老男孩Linux运维58期课堂笔记 ...
    乐园_YD阅读 203评论 0 0
  • Shell编程基础 1、为什么要学习Shell编程? Shell编程是Linux运维人员必须要会的编程语言。最简单...
    高博666阅读 629评论 0 0
  • 作者:马帅琦 归档:day28 时间:2019/4/9 Shell编程3小时光速入门 因为Web集群架构会用到Sh...
    马帅琦阅读 381评论 0 0
  • Day28 作者:方维超 归档:课堂笔记 时间:2019/4/9 老男孩教育教学核心思想6重:重目标、重思路、重方...
    Ffvc阅读 324评论 0 1
  • Shell编程3小时光速入门 因为Web集群架构会用到Shell编程基础,提前讲。 跟老男孩学Linux运维:Sh...
    Ning426阅读 221评论 0 0