20171123 Shell编程

Shell编程的基本知识点

一、shell编程

shell编程就是对一堆Linux命令的逻辑化处理

1. 变量

(1) 定义变量,类如:name=”zhao” ,”=”两边不用空格隔开,后面的变量需要使用” “,否则会                            有可能出现错误;

shell2

可以使用echo 来显示变量的值:echo $变量名,类如:

s1

(2)可以使用$来引用系统中已经存在的变量、常量,类如显示$ PS1:

s2

(3)可以使用命令来当变量,是一种命令调用命令的形式:

s3

(4)同样的也可以使用文章当作变量

s4

(5)unset 是用来删除变量的,unset 变量名 ,类如unset $name:

s5

(6)进程的相关知识:

用pstree可以查看当前的进程树

用echo $$可以查看当前的进程数

(7)

局部变量:生效的范围为当前的进程,对其他进程包括当前进程的子进程都无效

s6

环境变量(全局变量):生效范围为当前进程及其子进程都有效

环境变量的定义有两种:(1)使用export name=VALUE

(2)使用declare -x name=VALUE

export name=”zhao”

declare -x name=”lg”

s7

s8

(8)set 查看系统中所有的变量,函数,用export,declare和env查看系统中的环境变量

(9)只读模式(常量)只能声明,但不能修改,其的定义,有两种:

(1)readonly name=“VALUE”

(2)declare -r name=“VALUE”

s9

使用readonly -p 查看只读模式

(10)注意点()                                          sh

2.shell编程

(1)使用程序来查看环境变量:

#!/bin/bash
n=son
echo “p.sh:name=$n”                             echo “son=$n”
son.sh

(2)编写脚本/root/bin/systminfo.sh,显示出当前主机系统信息:

#!/bin/bash
echo “The informations :
the hostname is:`hostname`
the IPv4 is:`ifconfig ens33|grep -o “[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.                                                                            [0-9]\{1,3\}”|head -n1`
the system release is:`cat \/etc\/centos-release`
the banben is :`uname -r`
the CPU is :`lscpu|grep “Model name”|cut -d: -f2`
the neicun is :
`df -h |grep “/dev/sda*”`

(3)编写脚本/root/bin/backup.sh,可实现每天将/etc/目录下备份到/root/etcYYYY-mm-dd中:

sh2

(4)编写脚本/root/bin/disk.sh,显示当前硬盘分区 中空间利用率最大的值:

#!/bin/bash
df -h |grep sda*|tr -s ” “|cut -d ” ” -f5|sort -n|tail -n1

(5)退出状态值

0代表成功,1-255代表失败,也可以通过exit[n]来自己设定值

使用$?来保存最近的命令退出状态

(6)位置 变量:在脚本的代码中调用命令行传递给脚本的参数

$1代表第一个参数,$2代表第二个参数,$n代表第n个参数

$0:命令本身 , $*代表传递给脚本的所有命令

$@:传递给脚本的所有参数,每个参数是一个独立的参数

set清空所有的变量

sh3

(7)新建文件,自动添加文件介绍等内容:

#!/bin/bash
date=`date +%F`
echo “#Filename: $1”
echo “#Revision: 1.0”
echo “#Language: bash shell”
echo “#Author : $2”
echo “#Date : $date”
touch $1
chmod +x $1
vim $1 +

4.  bash中的算数运算:

(1)bash中支持:+,-,*,/,% ,**等运算

(2)let var=表达式

sh4

(3)$[ 表达式]

sh5

(4)$((表达式))

sh6

(5)expr 是一个命令,所以参数之间需要分开

sh7

(6)echo  “算数表达式”| bc

sh8

(7)自增自减

++    —    +=    -+

sh9

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88829

(0)
zss123456zss123456
上一篇 2017-11-23 16:50
下一篇 2017-11-23 20:45

相关推荐

  • 【26期】Linux第七周学习小总结

        今天给大家的分享是本周的一个有趣的小内容,LVM逻辑卷相关的,为什么分享这个内容呢?主要是刚没有接触或者说深入接触Linux时,有人在群里提问,如果不用虚拟机,那Centos本身有快照吗?当时说的答案很热闹,不过大部分还是倾向于没有快照,本周学习的逻辑卷管理器章节里,就这个问题给了一个准确答案,那我们一起来看一下吧!  …

    2017-08-26
  • bash 函数

        函数可以让多条shell的命令组成语句块,实现代码重用和模块化编程。让我们在不用重复编写一些脚本,下面让我们来了解函数。 1,函数的简介 函数在脚本中使用应先定义,声明,再可以调用。 函数function 是由若干条shell 命令组成的语句块,实现代码重用和模块化编程。 函数与shell 程序形式上是相似的,…

    Linux干货 2016-08-24
  • bash脚本编程class3

    bash脚本编程class3—函数定义与数组使用相关     一.函数的使用以及数组的定义   我们通过学习知道,当编辑一个shell脚本的时候,可以在这个shell脚本中调用其他的shell脚本来实现特定的功能。在实际工作环境中,用很多shell实现的功能是我们常常使用到的,如果一次一次的调用这些shell脚本会显得非常麻烦。…

    Linux干货 2016-08-24
  • GlusterFS测试报告-01

    一、GlusterFS基础环境的介绍 1、关于GlusterFS文件系统和架构的介绍 http://jingyan.baidu.com/article/046a7b3ef65250f9c27fa9d9.html 2、实验的目的 a. 利用多台性能较低并且老旧的服务器,实现企业的云盘功能 b. GlusterFS服务端和客户端的部署和配置 c. 实现Glust…

    Linux干货 2016-07-22
  • 网卡别名与多网卡绑定

    网卡别名 一块网卡可以配置多个ip地址,叫做网卡别名   对虚拟主机有用 格式形如:eth0:1  eth0:2 …… 实现方法:   在命令行中临时设置: ifconfig 命令: ifconfig eth0:0 192.168.1.100/24 演示:   修改配置文件 在/etc/sysconfig/networ…

    Linux干货 2016-09-05
  • 第三周作业

    查看链接:http://note.youdao.com/noteshare?id=9b1aa0906b0918cc5cb557aa348e82da

    Linux干货 2016-09-19