一篇文章让你彻底掌握 shell 语言

一篇文章让你彻底掌握 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 语言_第1张图片

  • 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"

你可能感兴趣的:(运维,linux,运维,运维开发)