一起来学Shell脚本编程(一)

前言

目前正在出一个Shell脚本编程系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~

前面我们学习了Linux的一些基本命令,需要我们在终端手动去执行,但在处理一些复杂的操作就显得有点乏力,需要不停的执行,还很容易出错。有没有一种办法,可以帮助我们执行这一些列操作,方法当然有,那就是通过脚本去解决。

作为服务端开发,shell脚本编程还是要掌握一下的,可以做做基础性的运维,提高工作效率。

本系列主要以Linux Bash为主 ,好了, 废话不多说直接开整吧~

什么是 Shell

Shell是计算机操作系统中的一种用户界面,用于与操作系统内核进行交互。它是用户与计算机之间的一个命令行界面或图形界面,用户可以通过Shell执行各种操作,例如运行程序、管理文件和目录、设置系统参数等。

Shell的主要功能包括:

  1. 命令解释和执行:用户可以在Shell中输入各种命令,Shell会解释这些命令并将它们传递给操作系统内核执行。这些命令可以是系统命令、应用程序命令或脚本文件。

  2. 文件和目录管理:用户可以使用Shell来创建、删除、移动、复制和查看文件和目录。这些操作可以通过命令行或图形用户界面来执行,具体取决于Shell的类型。

  3. 环境设置:用户可以在Shell中设置环境变量、别名和其他系统参数,以影响其后续命令的执行方式。

  4. 管道和重定向:Shell支持管道操作,允许将一个命令的输出传递给另一个命令作为输入。还可以使用重定向来将命令的输入和输出从标准输入和标准输出中定向到文件或其他设备。

  5. 脚本编写:用户可以编写Shell脚本,将一系列命令组合在一起,以便自动化任务、批处理处理或创建自定义工作流程。

在不同的操作系统中,有不同类型的Shell可供选择,其中一些常见的包括:

  • BashBash(Bourne Again Shell)是一种广泛使用的Unix/Linux Shell,它是许多Linux发行版的默认Shell

  • CmdCmdWindows操作系统中的命令提示符Shell,也称为命令行界面。

  • PowerShellPowerShellWindows上一种强大的Shell,它提供了更丰富的脚本编写和自动化功能。

  • ZshZsh是一种功能强大的Shell,它在Bash基础上提供了额外的功能和自定义选项。

  • FishFish是一种用户友好的Shell,具有智能自动补全和语法高亮等特性。

每种Shell都有其自己的语法和功能,用户可以根据需要选择合适的Shell来完成任务。Shell在计算机操作中发挥着重要的作用,它是与计算机系统交互的桥梁之一。

Shell脚本入门

这里给大家讲的例子主要以Bash为主,重点给大家介绍脚本的语法,下面我们通过一个例子快速的入门

新建一个文件test.sh,扩展名为.sh(sh代表shell)

bash 复制代码
#!/bin/bash
echo "Hello World !"

语法:

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shellecho命令用于向窗口输出文本。

执行脚本:

bash 复制代码
chmod +x test.sh

./test.sh

输出:

bash 复制代码
Hello World !

如果运行成功,那么你已经入门了~

注释语法

#开头的行就是注释,会被解释器忽略。因为没有多行注释,只能每一行加一个#号。

bash 复制代码
# --------
# 这是注释块
# --------

echo

内部指令,用于在屏幕上打印出指定的字符串

bash 复制代码
echo "hello\n";
echo -e "Hello,\n\tWorld!";  # `-e` 执行转义字符

输出:

bash 复制代码
hello\n
Hello,
	World!

将结果输出到文件:

bash 复制代码
echo "hello" >> hello.txt

输出:

shell 复制代码
[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./test.sh
[root@iZ2ze5vrnucj8nu52fq932Z shell]# ls
hello.txt  test.sh
[root@iZ2ze5vrnucj8nu52fq932Z shell]# 

printf

格式化输出语句

printf 命令用于格式化输出, 是echo命令的增强版

bash 复制代码
printf "hello \n world"

输出:

shell 复制代码
[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./test.sh
hello
 world

printf也可以不用转义字符,进行格式化输出:

bash 复制代码
printf "hello 


		world";

输出:

shell 复制代码
[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./test.sh
hello 


		world[root@iZ2ze5vrnucj8nu52fq932Z shell]# 

参数格式化输出:

bash 复制代码
printf "\n hello %s" "world" # world作为字符串参数

printf "\n 1+1= %d" 2 # 2作为数字参数 

printf "\n%s and %d \n" # 无参数时 数参默认为0

printf "\n%d"  1 2 3 4 5 # 1 2 3 4 5 都为参 循环输出

输出:

shell 复制代码
[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./test.sh

 hello world
 1+1= 
 2 and 0 
 1
 2
 3
 4
 5
[root@iZ2ze5vrnucj8nu52fq932Z shell]# 

结束语

大家平时在工作的时候就可以灵活运用起来了,多用用就熟悉了,大部分项目中都会用到脚本帮助我们去做一些自动化的工作,从而提高效率,还不容易出错~

本着把自己知道的都告诉大家,如果本文对有所帮助,点赞+关注鼓励一下呗~

Linux相关文章

往期面试题相关文章

项目源码(源码已更新 欢迎star⭐️)

往期设计模式相关文章

设计模式项目源码(源码已更新 欢迎star⭐️)

Kafka 专题学习

项目源码(源码已更新 欢迎star⭐️)

ElasticSearch 专题学习

项目源码(源码已更新 欢迎star⭐️)

往期并发编程内容推荐

推荐 SpringBoot & SpringCloud (源码已更新 欢迎star⭐️)

博客(阅读体验较佳)

相关推荐
三天不学习13 分钟前
C# 中的记录类型简介 【代码之美系列】
后端·c#·微软技术·record·记录类型
任小永的博客39 分钟前
VUE3+django接口自动化部署平台部署说明文档(使用说明,需要私信)
后端·python·django
凡人的AI工具箱42 分钟前
每天40分玩转Django:Django类视图
数据库·人工智能·后端·python·django·sqlite
凡人的AI工具箱1 小时前
每天40分玩转Django:实操图片分享社区
数据库·人工智能·后端·python·django
Q_19284999061 小时前
基于Spring Boot的个人健康管理系统
java·spring boot·后端
liutaiyi81 小时前
Redis可视化工具 RDM mac安装使用
redis·后端·macos
Q_19284999062 小时前
基于Springcloud的智能社区服务系统
后端·spring·spring cloud
xiaocaibao7772 小时前
Java语言的网络编程
开发语言·后端·golang
政采云技术2 小时前
Java反应式编程概述
后端
会说法语的猪3 小时前
springboot实现图片上传、下载功能
java·spring boot·后端