Shell编程时Linux运维人员必须要会的编程语言,最简单的编程语言。 Python
1.为什么要学习shell编程
Linux系统中会大量使用Shell,工作中需要自动化实现业务。
例如:自动备份,监控,自动安装服务。
2.什么是shell
Shell就是一个解释器,命令行的命令以及脚本都会通过shell解析,
传给操作系统,处理后输出给用户。
3.shell的分类
3.1 Bourne shell
3.2 C shell 包括csh,tcsh
C7支持的Shell
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
4.C7默认的Shell
[root@xiao7 ~]# echo $SHELL
/bin/bash
5.什么是Shell脚本?
程序、命令放入文件里执行。这个文件称之为shell脚本文件。
工作中最多的编程:写脚本。 存放在文件里。
6.Shell变量:
a.全局变量(环境变量)
在整个系统中生效。一般是大写。系统中默认就存在一些这样的变量。
满足系统和程序进行的需求。
[root@xiao7 /]# echo $PS1
[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\] \[\e[31;1m\]\w\[\e[0m\]]\$
[root@xiao7 /]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/.local/bin:/root/bin
自定义环境变量
方法1:
export OLDBOY="I am oldboy"
方法2:
OLBOY="I am oldboy"
export OLDBOY
永久生效
/etc/parofil==>>~/.bash_profile===>~/.bashrc===>/etc/bashrc
推荐以后把环境变量放入/etc/bashrc中。
1.export OLDBOY="I am oldboy"
2. . /etc/bashrc 加载一下。
3. echo $OLDBOY $<==输出一个变量内容就加$变量名
安装java服务时会配置环境变量
b.局部变量(自定义变量)
是编写Shell脚本最常用的变量
变量名=值
a=1
变量名:数字、字母、下划线、不能是数字开头。
=等号:赋值符。 两边不能有空格。
值:东西,变量内容。
引用内容的符号:单双引号,反引号:解析命令,不加引号
变量后面加东西如echo${x}b会出现1b但是echo$xb什么也出不来
[root@xiao7 /]# echo $a
1
[root@xiao7 /]# echo $ab
[root@xiao7 /]# echo ${a}b
1b
7.表达式
[表达式]中括号表达式,中括号必须两端要有
["$a" = "$b"] && echo 1 || echo 0
表达式成立则打印1,否则打印0
["$a" = "$b"] && echo 1
表达式成立,打印1
["$a" = "$b"] || echo 0
表达式不成立,打印0
取反
[!"$a" = "$b"]&& echo 1
> -gt
< -lt
= -eq
>= -ge
<= -le
不等于 -ne
1)整数表达式 两端必须要有空格
2)中括号里面两端必须要有空格
3)变量和比较的内容,不需要加引号
字符表达式:
-z 变量内容长度为0时,为真。zero
[root@xiao7 /]# oldboy="I am oldboy"
[root@xiao7 /]# [ -z "$oldboy" ] && echo 1 ||echo 0
0
-n 变量内容长度不为0时,为真。not zero
[root@xiao7 /]# [ -n "$oldboy" ] && echo 1 ||echo 0
1
a == a 字符串是否相同。
a = b 数值。
判断句
if [表达式] 如果
then 那么
命令
fi
#!/bin/bash
#!read -p "输入a b 的大小" a b
a=$1
b=$2
if [ "$a" -eq "$b" ]
then
echo a和b一样大
elif [ "$a" -gt "$b" ]
then
echo a比b大
else
echo b比a大
fi
read -p "今天天气不错" a
if [ "$a" "==" "是啊" ]
then echo "出去玩吧 "
elif [ "$a" "==" "不是" ]
then echo " 不出去玩 "
else echo " 行 "
fi
read命令 读取用户输入
-p 提醒
it 多长时间内等待输入
$1 脚本文件的第一个参数
$2 脚本文件的第二个参数
for n in 取值列表
``反引号,将反引号内的Linux命令先执行,然后将执行结果赋予变量。在脚本中使用。
书写脚本习惯:
1.以sh结尾
2.脚本开头第一行, #!/bin/bash 脚本内容由谁解释