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.sh

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

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

shell解释器在哪

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

自定义变量

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

[En]

User-defined variable is the most commonly used variable type, which is characterized by that the variable name and value are freely defined by the user.

学习要点

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

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

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

取消变量: unset 变量名

定义变量

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

变量调用

当我们需要提取变量的内容时,我们需要在变量名之前添加一个“$”符号。

[En]

When we need to extract the contents of a variable, we need to add a “$” symbol before the variable name.

那么最简单的变量调用就是通过 echo 命令输出变量的值。命令如下

错误定义示范

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

[En]

The definition of a variable is that simple, but an error will be reported if you do not follow the rules of variable definition. For example:

重复定义变量

重复变量的定义会导致变量的叠加。例如:

[En]

Repeating the definition of variables leads to variable superposition. For example:

定义变量aa的值是123

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

这里要注意,在叠加变量时,变量名需要用双引号或${}括起来。

[En]

Be careful here that variable names need to be enclosed in double quotes or ${} when superimposing variables.

变量查看

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

[En]

But if I don’t know the variable name, can I query the variables that already exist in the system?

[root@localhost ~]# set

变量删除

使用变量前

要求:为测试主机在线编写脚本。当主机被提示在线时,当主机不在线时,它就不在线。

[En]

Requirements: write a script for the test host online. When the host is prompted online, when the host is not online, it is not online.

编写脚本

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

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

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

需要修改三个部分

使用变量后

编写脚本

想想看:添加变量后,可以修改一个地方。

[En]

Think about it: after adding variables, you can modify one place.

交互定义变量

read 从键盘读入变量值

赋值方式:read 变量名

注意事项:3种引号

定义或引用变量时的注意事项:

[En]

Considerations when defining or referencing variables:

” ” 弱引用
‘ ‘ 强引用
优先执行

1.变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
2.命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
3.中间不能有空格,可以使用下划线(_)。
4.不能使用标点符号。
5.不能使用bash里的关键字(可用help命令查看保留关键字)。
6.起变量名,请使用五个字母以上。

整数运算

小数运算(了解)

环境变量(了解)

自定义变量,只能再当前shell生效。其他shell是不生效的, 说白了,你的变量只能你用。那如果有些变量,需要所有的用户都使用, 怎么办呢?

变量作用范围: 在当前shell和子shell有效
想使变量。在当前用户登陆后一直生效,可以将变量放到~/.bash_profile
想使变量。在所有用户登陆后一直生效,可以将变量放到/etc/profile

位置变量和预定义变量(了解)

位置变量语法

总结
这两种类型的变量在设计系统时已经定义。

[En]

These two types of variables are already defined when designing the system.

当你需要使用它的时候,直接打电话给它。

[En]

When you need to use it, call it directly.

编写自动创建用户并设置初始化脚本

Original: https://www.cnblogs.com/Jqazc/p/16616717.html
Author: 我真的兔了
Title: Shell第一章《变量》

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/522829/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球