一起来学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⭐️)

博客(阅读体验较佳)

相关推荐
程序员-珍15 分钟前
使用openapi生成前端请求文件报错 ‘Token “Integer“ does not exist.‘
java·前端·spring boot·后端·restful·个人开发
liuxin3344556632 分钟前
教育技术革新:SpringBoot在线教育系统开发
数据库·spring boot·后端
bug菌1 小时前
Java GUI编程进阶:多线程与并发处理的实战指南
java·后端·java ee
夜月行者3 小时前
如何使用ssm实现基于SSM的宠物服务平台的设计与实现+vue
java·后端·ssm
Yvemil73 小时前
RabbitMQ 入门到精通指南
开发语言·后端·ruby
sdg_advance3 小时前
Spring Cloud之OpenFeign的具体实践
后端·spring cloud·openfeign
猿java4 小时前
使用 Kafka面临的挑战
java·后端·kafka
碳苯4 小时前
【rCore OS 开源操作系统】Rust 枚举与模式匹配
开发语言·人工智能·后端·rust·操作系统·os
kylinxjd4 小时前
spring boot发送邮件
java·spring boot·后端·发送email邮件
2401_857439697 小时前
Spring Boot新闻推荐系统:用户体验优化
spring boot·后端·ux