Shell编程-什么是shell
作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
我们前面学习了那么多命令,以及涉及到部分逻辑判断的问题。从简单来说,他就是Shell编程,只有由于命令比较单一,只能实现比较简单的功能。如果我们把多个操作都放到一起去,并添加更复杂的逻辑在里面,他就是Shell编程。所以我们主要从以下几个方面讲解Shell编程:
Shell编程-什么是shell(本章节)
Shell编程-变量
Shell编程-数据类型
Shell编程-逻辑判断
Shell编程-if判断
Shell编程-if和else
Shell编程-while循环
Shell编程-for循环
Shell编程-case
Shell编程-break
Shell编程-continue
Shell编程--函数
Shell编程-案例(一)
Shell编程-案例(二)
Shell编程-小结
Shell 是一种命令行解释器,也是一种具有特殊用途的程序,它为用户提供了与操作系统内核进行交互的界面。以下是关于 Shell 的详细介绍:
一、基本概念与作用
-
定义与功能:
-
Shell 作为用户与操作系统之间的桥梁,主要负责接收用户输入的命令,并将这些命令解释为操作系统能够理解的指令,然后传递给操作系统内核执行。执行完成后,Shell 会将操作系统返回的结果展示给用户。
-
例如,当用户在终端中输入
ls
命令来查看当前目录下的文件列表时,Shell 会将ls
这个命令解析并传递给操作系统,操作系统执行相应的操作后,将文件列表信息返回给 Shell,Shell 再将这些信息显示在终端上。
-
-
在操作系统中的地位:
-
Shell 位于操作系统的外层,是用户直接接触和操作的部分,它隐藏了操作系统内核的复杂性,使用户能够以简单的命令方式来操作计算机系统。
-
类似于一个翻译器,将用户的自然语言式的命令转换为计算机能够理解的机器语言指令,从而实现对计算机资源的管理和控制。
-
二、常见Shell
1. Bash (Bourne Again Shell)
-
默认 Shell:Bash 是 CentOS 中的默认 Shell,广泛使用并提供了强大的功能。
-
特性:命令行编辑、历史记录、任务控制、自动补全等。
-
位置:通常位于
/bin/bash
。
2. Sh (Bourne Shell)
-
传统 Shell:Bourne Shell 是早期的 Unix Shell,Bash 旨在兼容 Bourne Shell。
-
特性:功能相对简单,但在现代系统中通常由 Bash 兼容。
-
位置:通常位于
/bin/sh
,在现代系统中,/bin/sh
可能指向/bin/bash
的兼容模式。
当然还有其他Shell,比如Ksh,Zsh等使用较少,这里就不介绍了。
三.脚本格式
1.bash解释器
#!/bin/bash
echo "This is bash
2.sh解释器
#!/bin/sh
echo "this is sh"
3.默认的Shell解释器
echo "this is xxx"
以上3种书写格式都可以达到同样的目的,但是建议使用第一种,最为大家常用的规范。
四.命令规范
保存为文件格式:xxx.sh。同脚本格式一样,也是没有要求的,只是大家都采用相同的规范,方便传播和其他人识别。
五.执行方式
1.给文件添加权限
chmod 755 xxx.sh
chmod u+x xxx.sh
2.执行方式一
./xxx.sh //相对路径
/root/xxx.sh //绝对路径
相对路径是指当前命令行所在的路径,登录以后,一般都是家目录,可以使用pwd命令查看当前路径。
绝对路径是从根分区开始计算,比如/root/目录/xxx.sh 有多少层级需要计算多少层级。
3.执行方式二
bash xxx.sh
sh xxx.sh
可以使用 sh -x xxx.sh 或者bash -x xxx.sh 可以看到执行过程,如果执行出错,可以看到比较详细的信息。但是有些脚本会输出很多内容。
这种方式执行不需要添加执行权限也可以执行。但是里面的解释器就等于失效了,使用的是前面的指定的解释器。
总结
1.在Linux系统里面,文件名或者说后缀并不起任何作用。使用.sh标注shell脚本,只是为了方便区分和识别,其他类型的文件也是一样的。
2.解析器也只是为了指定执行的shell,建议也按照规范书写。
3.shell脚本内部的命令,可以是linux下的任何命令,但是需要注意,有些命令会涉及到交互,比如yum 不使用-y 参数,执行脚本的时候他就会在控制台等待你确认,会阻塞在这里,具体看需求。
4.真实环境编写脚本多测试,然后才拿到生产环境使用。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。