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

相关推荐

  • 超级用户切换普通用户后如何重置root密码

    今天在使用su命令切换root用户和普通用户使用中不小心改了root密码,在普通用户条件下怎么也切换不到root用户,于是通过搜索和尝试终于改了root密码,现以centos7为例总结如下: 1、首先进入开启菜单,按下e键进入编辑模式,找到ro那一行,将ro改为rw,在语言后面加上init=/bin/sh 2、根据提示按下ctrl-x键(注意选中x) 3、尝…

    Linux干货 2017-03-27
  • 【社招】【小米-北京】运维开发工程师

    【社招】【小米-北京】运维开发工程师 【工作地点】北京市海淀区安宁庄东路72号科利源大厦 【薪酬福利】15k-30k 期权奖励、六险一金、水果花茶、班车、健身房、食堂 【投递方式】邮件主题“岗位+姓名”发送至lipengcheng3@xiaomi.com   岗位职责: 提高系统运维的自动化,主要包括运维平台、PaaS、监控系统,自动化部…

    Linux干货 2017-07-28
  • 网卡名称更改

    网卡是计算机进行网络通信的必须的设备。在CentOS6及其更早的系统中,网卡设备在系统中的名称命名为eth#(#为0,1,2…之类的数字)。在内核版本为3.0.0及其以后的Linux发行版中,网卡设备在系统中名称变得很长,变得不好识别以及不利于管理。为了更好的管理,我们将新的网络设备命名改为传统的命名。 网卡名称更改 在CentOS系统中操作 在RHEL7系…

    Linux干货 2016-11-23
  • nl命令使用解析

    nl    命令功用: nl – number lines of files 显示文件内容,并列出行号   命令样式: nl [OPTION]… [FILE]…   命令选项: -b:正文行号,参数为样式style -n:行号格式,参数为格式format -w:设定行号所占位数,参数为…

    Linux干货 2016-10-20
  • python基础_1

    变量/常量 常量:一旦赋值,就不能对它从新复制。python不存在常量 字面常量:一个单独出现的量,未赋值给任何变量或者常量 变量:就是一个名字,在固执符号的左边,这个名字可以指复制符号右边的内容。 变量列子: i = 3 print(i)  注:python 是强类型语言,是动态类型语言。(强类型指类型之间不能相互计算/动态类型是指变量是可以赋值…

    Linux干货 2017-10-10
  • N25-第6周

    vim:    模式化的编辑器        基本模式:            编辑模式,命令模式,            输入模式       &n…

    Linux干货 2017-02-13