SHELL语言是指UNIX操作系统的命令语言,同时又是命令语言的解释程序的简称
SHELL本身是一个用C语言编写的程序,他是用户使用Unix/Linux的桥梁,用户大部分工作都是通过Shell完成的。
Shell即使一种命令语言,又是一种程序设计语言。作为命令语言,他交互式地解释和执行用户输入的命令。
作为程序设计语言,它定义了各自变量和参数并提供了许多在高级语言中才会具有的控制结构,包括循环和分支。
他虽然不是Unix/Linux系统内核的一部分,但他调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。
因此,对于用户来说,Shell是最重要的实用程序,深入了解和熟练掌握Shell的特性及其使用方法,是用好Unix/Linux的关键。
Shell能做什么?
- 自动化批量系统初始化程序(Update、软件安装、时区设置、安全策略)。
- 自动化批量软件部署程序(LAMP、LNMP、Tomcat、LVS、Nginx)。
- 应用管理程序(KVM、集群管理扩容、MySql、DELLR720RAID)。
- 日志分析处理程序(PV、UV、200代码、!200代码、top 100、grep/awk)。
- 自动化备份恢复程序(MySql完全备份/增量备份+Crond)。
- 自动化管理程序(批量远程修改密码、软件升级、配置更新)。
- 自动化信息采集及监控程序(收集系统/应用状态信息、CPU、Mem、Disk、Net、TCP Status、Apache、MySql)。
- 配合Zabbix信息采集(收集系统/应用状态信息、CPU、Mem、Disk、Net、TCP Status、Apache、MySql)。
- 自动化扩容(增加云主机–>业务上线),zabbix监控CPU 80%+|-50% Python API AWS/EC2(增加/删除云主机)+Shell Scrip(业务上线)。
- 俄罗斯方块、打印三角形、打印圣诞树、打印五角星、运行小火车、坦克大战、排序算法实现。
- Shell可以做任何事情,取决于业务需求。
Shell的执行方法
使用 bash 或 sh 都可以执行文件,sh 是 bash 的软链接(也叫符号链接,),实际上是调用bash效果一致,称为子Shell,用的是独立环境。会启动一个新的子shell来执行脚本,脚本中的变量和配置更改不会影响父shell。需要脚本具有执行权限,因为它们会启动一个新的shell进程来执行脚本。
使用 ./ 执行文件:在当前目录下执行脚本,需要脚本具有执行权限。这也会启动一个新的子shell来执行脚本,因此脚本中的变量和配置更改不会影响父shell。需要脚本具有执行权限,因为它们会启动一个新的shell进程来执行脚本。
使用 . 或 source 来执行文件( . 是source
的另一种写法,两者功能完全相同),称为本Shell,用的是当前环境,这意味着脚本中的变量和函数定义会直接影响当前shell环境。不需要脚本具有执行权限,因为它们是在当前shell环境中执行脚本内容。
使用 来执行,称为本Shell,用的也是当前环境。
准备测试脚本
[root@local tmp]#vim file1.sh
echo "hello world"
read -p "请输入你的名字:" name
echo "哈哈$name是大笨蛋"
1.使用bash执行:
bash file1.sh
2.使用sh执行:
sh file1.sh
3.使用 . 执行
. file1.sh
4.使用 source 执行:
source file1.sh