linux shell编程及自动化运维实现
第一章 变量
一、shell 前言
1、shell语言的特点:
-
SHELL语言是指Unix操作系统的命令语言,同时又是该命令语言的解释程序的简称。
-
shell本身是一个用c语言编写的程序,它是用户使用unix/linux的桥梁,用户的大部分工作都是通过shell完成的。
-
shell即是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令。
-
作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
-
它虽然不是unix/linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序。
-
建立文件并以并行的方式协调各个程序的运行。
-
因此,对于用户来说,shell是最重要的实用程序。
-
深入了解和熟练掌握shell的特性及其使用方法,是用好unix/linux系统的关键。
2、shell能做什么:
3、shell执行方式
shell多种执行方式:
- 准备测试脚本:
[root@localhost] vim file1
echo "hello 2020"
read -p "请输入您的姓名:" name
echo "哈哈$name是大笨蛋"
执行1:bash file1
[root@localhost] bash file1
hello 2022
请输入您的姓名:666
哈哈哈666是大笨蛋
执行2:sh file1
[root@localhost] sh file1
hello 2022
请输入您的姓名:666
哈哈哈666是大笨蛋
执行3:. file1
[root@localhost] . file1
hello 2022
请输入您的姓名:666
哈哈哈666是大笨蛋
执行3:source file1
[root@localhost] source file1
hello 2022
请输入您的姓名:666
哈哈哈666是大笨蛋
多种执行方式的区别:
准备环境:
#1.准备环境
[root@localhost] ls /home
aofa
vim bash.sh
#!/bin/bash #脚本声明
cd /home
ls
1和2的方式,是子shell,执行完不影响本shell。
[root@localhost~] bash #进入子shell,默认打开
[root@localhost~] exit #退出子shell
[root@localhost] bash bash.sh
aofa
[root@localhost~] sh bash.sh
aofa
[root@localhost~] pwd
/root #当前的位置还在root你看不见那个shell它运行完就自动关了
3和4的方式,是本shell ,执行完改变本shell。
[root@localhost~] . bash.sh #影响的是当前shell
aofa
[root@localhost home] pwd
/home
[root@localhost~] source bash.sh #影响的是当前shell
aofa
[root@localhost home] pwd
/home
4、shell解释器的位置
[root@localhost ~] which bash
/usr/bin/bash
[root@localhost ~] cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
二、变量
简介:shell变量用一个固定的字符串去表示不固定的内容,便于修改
==简述:==用户自定义变量是最常见的变量类型,其特点是变量名和变量值都是由用户自由定义的。
学习要点:
-
定义变量:变量名=变量值
-
引用变量: 变量名,或 变量名,或 变量名,或{变量名}
-
查看变量:echo$变量名;set可以查看所有变量(包括自定义变量和环境变量)
-
取消变量:unset变量名
1、自定义变量
自定义变量只在当前shell内生效
定义变量
该如何定义变量呢?很简单,只需执行“变量名=变量值”命令即可,不过要遵守变量定义规则。例如:
[root@localhost ~] name="hyb 666"
变量调用
当我们需要提取变量中的内容时,需要在变量名之前加入“$”符号。那么最简单的变量调用就是通过echo命令输出变量的值。命令如下:
- 定义变量name
[root@localhost ~] name="hyb 666"
- 输出变量name的值
[root@localhost ~] echo $name
hyb 666
- 错误定义示范
变量的定义就是这么简单,但是如果不遵守变量定义规则,就会报错:比如:
变量名不能以数字开头
[root@localhost ~] 2name="hyb 666"
bash: 2name=hyb 666: 未找到命令...
等号左右两边不能有空格
[root@localhost ~] name = "hyb 666"