一篇文章让你彻底掌握 shell 语言
-
- 1. 前序
- 2. shell介绍
-
- 2.1. 什么是shell
- 2.2. 什么是shell编程
- 2.3. shell解释器
- 3. 基本语法
-
- 3.1 第一个shell脚本
- 3.2 注释
- 3.3. echo
-
- 3.3.1 **输出字符串**
- 3.3.2 **输出变量**
- 3.3.3 **启用转义字符**
- 3.3.4 **向文件添加内容**
- 3.3.5 **输出命令执行结果**
- 3.3.6 **输出文件**
- 3.4. printf
- 3.5 变量
-
- 3.5.1 变量名命名规则:
- 3.5.2 定义变量:
- 3.5.3 使用变量:
- 3.5.4 只读变量:
- 3.5.5 删除变量:
- 3.5.6 变量类型:
- 3.6 字符串
-
- 3.6.1 **单引号:**
- 3.6.2 **双引号:**
- 3.6.3 **不用引号:**
- 3.6.4 **字符串方法**
- 3.7 数组
-
- 3.7.1 **定义数组:**
- 3.7.2 **读取数组元素:**
- 3.7.3 **获取数组长度:**
- 3.7.4 **删除数组元素:**
- 3.8 运算符
-
- 3.8.1 算术运算符
- 3.8.2 关系运算符
- 3.8.3 布尔运算符
- 3.8.4 逻辑运算符
- 3.8.5 字符串运算符
- 3.8.6 文件测试运算符
- 4. 流程控制
-
- 4.1 选择结构
-
- 4.1.1 if语句
- 4.1.2 case语句
- 4.2 循环结构
-
- 4.2.1 for循环
- 4.2.2 while循环
- 4.2.3 until循环
- 4.2.4 select in循环
- 4.2.4 break和continue
- 5. 函数
-
- 5.1 函数定义
- 5.2 函数调用
- 5.3 函数返回值
- 6. 其他
-
- 6.1 test 和 []
- 6.2 [[]] 和 []
- 6.3 (())命令
- 6.4 source命令
1. 前序
手动安装jdk
# 第1步 切换到家目录
cd
# 第2步 下载jdk镜像源
wget -c https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz
# 第3步 新建/opt/java目录
mkdir /opt/java
# 第4步 解压jdk至/opt/java目录下
tar -xvf jdk-8u151-linux-x64.tar.gz -C /opt/java
# 第5步 设置软链接
ln -s /opt/java/jdk1.8.0_151/bin/java /usr/sbin/java
# 第6步 java命令是否可用
java -version
存在问题:
1、得特别熟悉安装软件
2、每次安装都要去捋安装思路;
3、每安装一步,都需要手动敲命令,耗时耗力;
4、部署n台,更加耗时,效率低…
问题解决方法:shell编程,编写shell脚本
2. shell介绍
2.1. 什么是shell
- shell是一门编程语言,类似python、php一样的解释型编程语言
2.2. 什么是shell编程
编写的代码文件运行在shell编程语言环境中,类似编写运行在python、php编程语言环境下的代码文件,因为shell是一门解释型语言,所以也称为编写shell脚本(shell script),文件名后缀常用.sh
2.3. shell解释器
常见shell解释器有以下几种:
-
Bash (Bourne Again Shell): Bash是最常用的Shell解释器,也是默认的Linux命令行解释器。它继承了Bourne Shell的特性,并添加了许多功能和改进,包括命令历史、自动补全、作业控制等。
-
sh (Bourne Shell): Bourne Shell是Unix系统中最早的Shell解释器之一,它是其他Shell的基础,语法相对简单,常用于编写脚本。
-
csh (C Shell):C Shell使用C语言风格的语法,提供了一些便于程序员使用的功能,如命令行编辑和作业控制。它在某些Unix系统中是默认的Shell解释器。
-
ksh (Korn Shell: Korn Shell是由Bourne Shell和C Shell发展而来的Shell解释器,它继承了两者的特性,并添加了一些新的功能和语法,如命令历史、命令别名等。
-
tcsh (Enhanced C Shell): tcsh是C Shell的扩展版本,提供了更多的功能和命令补全等增强特性。
查看系统正在使用解释器
env
echo $SHELL
查看系统已安装解释器
cat /etc/shells
chsh -l
切换系统解释器
# 需要退出重登
chsh
# 需要退出重登
chsh -s /bin/sh
exec bash
交互式shell和非交互式shell
交互式模式:在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。
[root@centos ~]# pwd
/root
非交互式模式:以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。
sh test.sh
3. 基本语法
3.1 第一个shell脚本
# 打开test.sh文件
vim test.sh
# test.sh文件写入内容
echo "hello,world"
# sh解释器执行脚本
sh test.sh
# bash解释器执行脚本
bash test.sh
# 给test.sh加可执行权限
chmod +x test.sh
# 用系统默认解释器运行test.sh脚本
./test.sh
/root/test.sh
# 也可以给test.sh脚本指定shell解释器
[root@centos ~]# cat test.sh
#!/bin/sh
echo "hello,world"
# 推荐这种方式指定shell解释器
[root@centos ~]# cat test.sh
#!/usr/bin/env sh
echo "hello,world"
3.2 注释
注释起到说明描述作用,解释器执行文件(脚本)时会被忽略掉。
- 单行注释:以
#
开头,到行尾内容会被解释器忽略掉 - 多行注释:以
:<<EOF
开头,到EOF
结尾之间的内容会被解释器忽略掉
[root@centos ~]# cat test.sh
#!/usr/bin/env sh
# 作者:buddha
# 作用:测试脚本,可删除
echo