一、shell编程
shell编程就是对一堆Linux命令的逻辑化处理
1. 变量
(1) 定义变量,类如:name=”zhao” ,”=”两边不用空格隔开,后面的变量需要使用” “,否则会 有可能出现错误;
可以使用echo 来显示变量的值:echo $变量名,类如:
(2)可以使用$来引用系统中已经存在的变量、常量,类如显示$ PS1:
(3)可以使用命令来当变量,是一种命令调用命令的形式:
(4)同样的也可以使用文章当作变量
(5)unset 是用来删除变量的,unset 变量名 ,类如unset $name:
(6)进程的相关知识:
用pstree可以查看当前的进程树
用echo $$可以查看当前的进程数
(7)
局部变量:生效的范围为当前的进程,对其他进程包括当前进程的子进程都无效
环境变量(全局变量):生效范围为当前进程及其子进程都有效
环境变量的定义有两种:(1)使用export name=VALUE
(2)使用declare -x name=VALUE
export name=”zhao”
declare -x name=”lg”
(8)set 查看系统中所有的变量,函数,用export,declare和env查看系统中的环境变量
(9)只读模式(常量)只能声明,但不能修改,其的定义,有两种:
(1)readonly name=“VALUE”
(2)declare -r name=“VALUE”
使用readonly -p 查看只读模式
(10)注意点()
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中:
(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清空所有的变量
(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=表达式
(3)$[ 表达式]
(4)$((表达式))
(5)expr 是一个命令,所以参数之间需要分开
(6)echo “算数表达式”| bc
(7)自增自减
++ — += -+
”
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88829