美文网首页
day28-2019年4月9日

day28-2019年4月9日

作者: Linux_wu_sir | 来源:发表于2019-04-14 21:32 被阅读0次

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 ,所以也可以不写这一行

相关文章

  • day28-2019年4月9日

    shell编程基础 1、为什么要学shell编程? linux系统中会大量得使用shell,工作中也需要...

  • 年,年,年

    忽然就是腊八节了,朋友做了很多腊八蒜,炸了藕盒和带鱼送来,年的味道就出来了。 旧日的新年像一幅幅画卷在心里展开,浓...

  • 年!年!年!

    2016年2月10日 18:44 又是一年过年,对于我这种不太喜欢热闹的人,简直是一场灾难。那种感觉,就是你想听久...

  • 年,年,年!

    小时候,最期待的就是过年了。 每年一到农历十二月,家家户户都已经在为过年做准备了。光做吃的,就有很多种,做豆腐,油...

  • 年  年

    这些年,又些年。年年 岁岁

  • 年?年。

    裹着厚重的大围巾,走在再熟悉不过的街道上,小口小口地呼吸着充斥着年味的冰冷的空气。无意间瞥见超市门口早已挂上的一排...

  • 年~年~年~——春节之感

    7天的春节就这么过完了如果用一个字来形容这几天的感受,你会用什么呢? 对我而言,最先印入脑海的是“累”! 如果用两...

  • 我的✔✘年✘年✘年

    2012年✘2016年|QQ空间Day1|我的年少 2012年✘2016年|@微博Day1| 我的真爱 2015年...

  • 7年7年7年7年

    假如以7年为一个单元记录自己的人生,你想过: 1.自己的人生会有几个7年? 2.第几个7年是你成功或失败人生的关键...

  • 年味儿&年

    小年 夜不能寐 思绪又起 转眼人生二十载 匆匆忙忙又过年 现今的年已无年味儿 街坊邻里几回得见 亲朋好友 也是鸟无...

网友评论

      本文标题:day28-2019年4月9日

      本文链接:https://www.haomeiwen.com/subject/afkewqtx.html