1》为什么要学习shell编程?
Linux系统中会大量使用shell,工作中也需要自动化实现业务,
例如:自动备份,监控,自动安装服务。
shell编程是Linux运维人员必须会的编程语言。
shell,Python是运维人员必备的本领。
2》什么是shell?
shell就是一个解释器,命令行的命令以及脚本都会通过shell解释,
传给操作系统,处理后在输出给用户。
3》shell的分类
C7:
的shell又包括csh、tcsh两种类型。
4》C7:默认shell
echo $SHELL
55》什么是shell脚本?
程序、命令、放入文件执行,这个文件称为shell脚本文件。
工作中最多的是编程写脚本,存放在文件里。
6》shell的变量:
1、全局变量(环境变量)
在整个系统中生效、一般大写、系统中默认存在一些这样的变量,满足系统和程序运行的需求
系统自带的环境变量
[root@Hello ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
自定义环境变量:
export OLDBOY="I am oldboy."
推荐推荐把环境变量放入/etc/bashrc
分安装Java服务时会配置环境变量
2、局部变量(普通变量)
是编写shell脚本最常用的变量。
变量=值 a=1
变量名:数字、字母、下划线,不能是数字开头
=等号 :赋值符,把什么东西给谁。(不能有空格)
值:东西,变量内容
引号内容的符号:单引号、双引号、反引号、不加引号】
变量可以相加
let 计算命令7》表达式
[ 表达式 ]中括号表达式,中括号两端必须要有空格。
字符串要加双引号
[root@oldboyedu ~]# [ "a" = "b" ] && echo 1||echo 0
0
[ "a" = "b" ] && echo 1||echo 0
如果表达式成立,打印1,否则打印0.
[ "a" = "b" ] && echo 1 #跟屁虫。
如果表达式成立,打印1
[ "a" = "b" ] || echo 0 #杠精。
如果表达式成立是假的,打印0
取反:
[ ! "a" = "b" ] && echo 1
1)整数表达式符 两端必须要有空格
2)中括号里面两端必须要有空格。
3)变量和比较的内容,不需要加引号。
说明:
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
整数表达式:
> -gt greater than
>= -ge greater than or equal
< -lt less than
<= -le less than or equal
= -eq equal
不等于 -ne not equal
字符表达式:
-z zero 变量内容长度 为0, 为真(正确)
-n not zero 变量内容长度 不为0 ,为真
a == a 字符串是否相同
说明:
1)字符串要加双引号。
例子:
18.shell判断句:
如果....那么...
如果[ 你是大美女 ]
那么 就和你谈恋爱
否则 拜拜
if 判断句语法:
if [ 表达式 ]
then 命令
fi
read命令:交互式读取用户输入
-p "提醒:"
-t "多长时间等待输入"
书写脚本习惯:
1、以 .sh 结尾
2、脚本开头第一行 #!/bin/bash 脚本内容由谁解释。
由于Linux下默认是bash,所以也可以不写这一行。
特殊位置变量:
$1 脚本文件的第一个参数赋值给$1
$2 脚本文件的第二个参数赋值给$2
注释掉read9》for循环
for n in 取值列表
do
执行命令
don
网友评论