设为首页 加入收藏

TOP

Shell第一章《变量》(一)
2023-07-23 13:30:26 】 浏览:50
Tags:Shell 《变量》

shell前言

什么是shell

shell-‘壳’ 命令解释器,一种应用程序

shell语言特点

SHELL语言是指UNIX操作系统的命令语言,同时又是该命令语言的解释程序的简称。

Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。

Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令,作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支,它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Unix/Linux系统的关键。

shell能做什么

Shell 能做什么?
1. 自动化批量系统初始化程序 (update,软件安装,时区设置,安全策略...)
2. 自动化批量软件部署程序 (LAMP,LNMP,Tomcat,LVS,Nginx)
3. 应用管理程序 (KVM,集群管理扩容,MySQL,DELLR720批量RAID)
4. 日志分析处理程序(PV, UV, 200代码, !200代码, top 100, grep/awk)
5. 自动化备份恢复程序(MySQL完全备份/增量 + Crond)
6. 自动化管理程序(批量远程修改密码,软件升级,配置更新)
7. 自动化信息采集及监控程序(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL)
8. 配合Zabbix信息采集(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL)
9. 自动化扩容(增加云主机——>业务上线)
zabbix监控CPU 80%+|-50% Python API AWS/EC2(增加/删除云主机) + Shell Script(业务上线)
10. 俄罗斯方块,打印三角形,打印圣诞树,打印五角星,运行小火车,坦克大战,排序算法实现

shell的执行方式

1 执行1:bash    file1 
2 执行2:sh   file1 
3 执行3:.   file1 
4 执行4: source     file1 

 

多种执行方式的区别:

1.准备环境

1 vim bash.sh 
2 #!/usr/bin/bash 
3 cd /home/ 
4 ls

2. 一种执行方式测试
. bash.sh

3.观察目录改变了。说明影响的是当前。并使用子shell执行方式执行。

该种执行方式,是不同于前者SUB shell执行。
而是在当前shell执行,用于影响当前shell环境。

shell解释器在哪

1 cat /etc/shells
2 3 chsh -l

变量

shell 变量? 用一个固定的字符串去表示不固定的内容,便于修改。

自定义变量

用户自定义变量是最常用的变量类型,其特点是变量名和变量值都是由用户自由定义的。

学习要点

定义变量: 变量名=变量值

引用变量: $变量名或 ${变量名}

查看变量: echo $变量名; "set"可以查看所有变量(包括自定义变量和环境变量)

取消变量: unset 变量名

定义变量

该如何定义变量呢?很简单,只需执行"变量名=变量值"命令即可,不过要遵守变量定义规则。例如

1 [root@localhost ~]# name="test 666"

变量调用

当我们需要提取变量中的内容时,需要在变量名之前加入"$"符号。
那么最简单的变量调用就是通过 echo 命令输出变量的值。命令如下

1 #定义变量name 
2 
3 [root@localhost ~]# name="test 666"
4 
5 #输出变量name的值
6 
7 [root@localhost ~]# echo $name
8 
9 test 666

错误定义示范

变量的定义就是这么简单,但是如果不遵守变量定义规则,就会报错。比如:

#变量名不能以数字开头

[root@localhost ~]# 2name="test 666"

-bash: 2name=test 666: command not found

#等号左右两侧不能有空格

#变量的值如果有空格,必须用引号包含

[root@localhost ~]# name=test 666

-bash: 666: command not found

重复定义变量

重复定义变量会进行变量叠加。例如:

#定义变量aa的值是123

#重复定义变量aa的值是源aa的值加上456

 1 [root@localhost ~]# aa="$aa"456
 2 
 3 #调用变量aa,发现值已经变成了123456
 4 
 5 #在进行变量叠加时,也可以使用${变量名}格式
 6 
 7 [root@localhost ~]# aa=${aa}789
 8 
 9 [root@localhost ~]# echo $aa
10 
11 123456789

这里要小心,在进行变量叠加时,变量名需要用双引号或 ${} 包含。

变量查看

我们可以通过 echo 命令查询已经设定的变量的值,这种查询是已知变量名查询变量值。
但是如果我不知道变量名,那么可以查询系统中已经存在的变量吗?

[root@localhost ~]# set 

变量删除

 1 [root@localhost ~]# aa="$aa"456
 2 
 3 #调用变量aa,发现值已经变成了123456
 4 
 5 #在进行变量叠加时,也可以使用${变量名}格式
 6 
 7 [root@localhost ~]# aa=${aa}789
 8 
 9 [root@localhost ~]# echo $aa
10 
11 123456789

示例

使用变量前

需求:编写测试主机在线的脚本。当主机在线提示在线,当主机不在线提示不在线。

编写脚本

ping    -c1      192.168.100.10     &>    /dev/null    &&   echo      192.168.100.10up     ||    echo      192.168.100.10down

注释:&&和||是三目表达式、&& 前面的命令成功。执行后面的命令、||前面的命令失败。执行后面的命令

思考:如果更换测试IP。需要修改脚本的哪些部分?

需要修改三个部分

使用变量后

编写脚本

1 #!/bin/bash
2 
3 ip=192.168.100.10
4 
5 ping -c1 $ip &>/dev/null  && echo $ip  up ||   echo "$ip  down"

思考:添加变量后,修改一处即可。

交互定义变量

r

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Linux iptables自定义链 下一篇Read the Docs 在线文档搭建教程(..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目