43-Shell编程基础

作者: 杨丶子 | 来源:发表于2019-06-05 08:33 被阅读130次

格式

#!/bin/bash
#!幻数 指定脚本用的命令解释器
执行脚本
sh
sh +x

1、为什么要学习shell编程?

Linux系统中会大量的使用Shell,工作中我们也需要自动化实现业务,例如:自动备份、监控、自动安装服务
Shell编程是Linux运维人员必须要会编程语言。最简单的编程语言。
编程也是运维人员必须具备的本领:
Shell、python是运维人员必须具备的本领

2、什么是Shell?

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

3、Shell的分类

/bin/sh、/bin/bash、/usr/bin/sh、/usr/bin/bash

4、CentOS7默认脚本是Shell

[root@zhang ~]# echo $SHELL
/bin/bash

5、什么是Shell脚本?

程序、命令放入文件里执行,这个文件称之为Shell脚本文件。
工作中最多的编程写脚本,存放在文件里。

二、变量

1.变量

方便脚本里面进行重复使用

命名规则
    看见变量名称  识别变量作用
    不能以数字开头

变量分类
    局部变量(普通变量)
    IP=10.0.0.200
    time=2019-01-01

全局变量(环境变量)
    系统创建
        在整个系统中生效
    大部分地方意思一样
    一般是大写

特殊变量
        \$?  数字  \$#  \$*

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

image

3.引号系列

image

4.特殊变量

image

5.局部变量和全局变量区别:

[root@m01 /server/scripts]# LIDAO=996
[root@m01 /server/scripts]# 
[root@m01 /server/scripts]# echo $LIDAO
996
[root@m01 /server/scripts]# cat show.sh 
#!/bin/bash
echo $LIDAO
[root@m01 ~]# sh show.sh  \\执行脚本为空

[root@m01 ~]# 
[09:17 root@m01 ~]#  export LIDAONB  \\添加全局变量
[09:22 root@m01 ~]# echo $LIDAONB
666
[09:22 root@m01 ~]# sh show.sh 
666

6.局部变量和全局变量区别

https://www.processon.com/view/link/5a0e4380e4b06c8e10923353

image image

7.awk的 -v 参数

[09:49 root@m01 ~]# x=10
[09:49 root@m01 ~]# y=99
[09:49 root@m01 ~]# echo $x
10
[09:49 root@m01 ~]# echo $y
99
[09:49 root@m01 ~]# awk 'BEGIN{print $x/$y}'
awk: cmd. line:1: fatal: division by zero attempted
[09:49 root@m01 ~]# awk -vn1=10 -vn2=99 'BEGIN{print n1/n2}'
0.10101
[09:51 root@m01 ~]# awk -vn1=$x -vn2=$y 'BEGIN{print n1/n2}'
0.10101
[09:51 root@m01 ~]# awk -vx=10 -vy=99 'BEGIN{print x/y}'
0.10101
[09:53 root@m01 ~]# 

8.利用shell编译小型计算器

[10:18 root@m01 ~]# vim show.sh 
#!/bin/bash
. /etc/profile
x=$1
y=$2

echo $1\+$2= ;awk -vx=$x -vy=$y 'BEGIN{print x+y}'
echo $1\-$2= ;awk -vx=$x -vy=$y 'BEGIN{print x-y}'
echo $1\*$2= ;awk -vx=$x -vy=$y 'BEGIN{print x*y}'
echo $1\/$2= ;awk -vx=$x -vy=$y 'BEGIN{print x/y}'

[10:19 root@m01 ~]# sh show.sh 5 6
5+6=
11
5-6=
-1
5*6=
30
5/6=
0.833333

知识有限暂不支持小数运算

image image

9.特殊变量中简单判断参数个数:

image image

10.判断目录存不存在,不存在就创建

image image

三、判断语句

if判断句语法:单分支: 如果。。。那么就
if [ 表达式 ]
then命令
else
exit 退出
fi 果如

1.if语句格式:

if [ 表达式 ]
    then命令
    exit 退出
fi

image image

2.对比两个数值大小

image image

3.检查定时任务是否运行中

image image

避免过滤的时候 过滤掉grep命令自己

image

四、循环语句

for语句

image

五、扩展:

read命令

http://man.linuxde.net/read

从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合。该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开。在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY

-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒)。

image image

相关文章

  • 43-Shell编程基础

    格式 1、为什么要学习shell编程? Linux系统中会大量的使用Shell,工作中我们也需要自动化实现业务,例...

  • 9.25 c++ 总结

    Windows编程基础 总结: 25号开始学习Windows编程基础,MFC编程。Windows和MFS中的字符,...

  • 嵌入式LINUX开发三步走

    第一学习阶段,主要打好基础,学好C编程,Linux系统编程。 1、C语言编程基础 2、嵌入式开发基础:Linux概...

  • 2018-10-18

    编程基础

  • 2018-10-18

    编程基础

  • 校招准备内容

    主要方向:基础知识+编程能力 计算机和编程基础:计算机基础:1.操作系统;2.网络3.数据库编程语言基础:(Jav...

  • Linux基础知识目录

    硬链接、软链接重定向shell编程基础搭建vsftpdLinux C 编程基础Linux C 进程控制基础Linu...

  • 2018-6-29 计算机基础—计算机是如何存储数据的

    编程基础 WHY 为什么要学编程基础: 谨记你先是一个程序员,其次才是前端。 为什么要学编程基础:为了不夜郎自大,...

  • 0基础直接学 Python 编程合适吗?Python语言能做什么

    0基础直接学 Python 编程合适吗? 0基础非常适合学习Python编程,因为在目前的编程语言中,Python...

  • C++学习笔记之C++基础

    1、C++学习计划 (1)基础语法(复习)——初步了解,基础编程(2)核心编程——面向对象(3)提高编程——泛型编...

网友评论

    本文标题:43-Shell编程基础

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