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

本文详细介绍了Shell语言,包括Shell是什么、常见的Shell解释器,以及基本语法如变量、字符串、数组、运算符、流程控制和函数。通过学习,你可以掌握编写Shell脚本的技能,提高Linux运维效率。
摘要由CSDN通过智能技术生成

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 "hello,world"

:<<EOF
有以下方式执行:
sh test.sh
bash test.sh
./test.sh
/root/test.sh
EOF

3.3. echo

功能:

可以将文本消息或字符串输出到终端或文件中

语法:

echo [-neE] [arg ...]

选项:

选项 说明
-n 输出字符串不换行
-e 启用转义字符
-E 禁用转义字符

转义字符:

转义字符 说明
\a 发出蜂鸣器警告声
\b 删除前一个字符
\c \c后面内容不输出,也不换行
\f 换页符,光标停在原处
\n 换行且光标移至行首
\r 回车符
\t 水平制表符,就是Tab键
\v 垂直制表符
\\ 插入\字符
\e Esc键
\0nnn 按照八进制ASCII码表输出字符
\xhh 按照十六进制ASCII码表输出字符

3.3.1 输出字符串
echo "hello,world"
3.3.2 输出变量
str="hello,world"

echo $str

echo ${str}
3.3.3 启用转义字符
echo -e "hello,world\a"

echo -e "hello\nworld"

echo -e "hello\r
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员buddha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值