百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Shell脚本怎么写?(0)(shell脚本怎么写变量)

gudong366 2025-07-23 14:56 4 浏览

各位不好意思,最近加班 + 感冒,有三四天没更新了,python自动化脚本系列总共六期,基本已经囊括了编写python自动化脚本的所有基础函数和语法了。

大家如果没看过这个系列的话,可以参考下面的链接:

工作中使用python编写自动化脚本,提前两小时下班不是梦

工作中使用python脚本——提前两小时回家见老婆(1)

每天学Python自动化,干完工作早回家系列(2)

python自动化脚本,解放你的双手(3)

python自动化脚本,解放你的双手(4)

使用python自动化脚本执行shell命令,提前两小时下班(5)

如果大家对python感兴趣,想要系统学习,可以留言,我到时候开一个新的系列,从零开始每天一篇,入门python。

然后,考虑到,就算学习了上面所有的python自动化脚本编写方法,但是,我们一般还是要跟linux 操作系统打交道的,还是免不了使用python 调用linux 的系统命令,获取信息,或者使用python 调用shell 脚本。

理论上,自动化脚本编写时,到底选择python 还是 shell,主要就是看,自动化脚本的复杂程度,python 应用于一些处理复杂,需要频繁调试或者跨系统也可以使用的自动化脚本编写。

而shell 就是编写一些简单的,只能在linux 中使用的自动化脚本,它使用起来更为简单。

有时候,python 和shell 可能也需要互相调用,于是,要是想进阶,修炼成一个中级一点的自动化脚本开发人员的话,一定要对原生linux shell 脚本的编写有一定的理解。

所以,我想了一下,打算接下来几期,给大家介绍一下shell脚本的编写,帮助大家提高自己。

好吧,肺部哆嗦(废话不多说),我们开始吧。

今天是第0期,当然是简单介绍下,什么是shell 脚本,如何编写一个最简单的shell 脚本,一个完整的shell 脚本包含哪些部分?

请看下面示例:

什么是shell脚本呢? 什么是shell?

借用官方的解释:

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

上图就是一个世界上最简单的shell 脚本程序。

它包含两部分, 第一部分是写在文件头部的

#!bin/bash, 它是一个标识,告诉linux ,以下的文本需要用 bash这个执行程序去解析。

echo hello world 中,echo 是linux 的打印命令, 后面的 hello world 是打印内容。(有人可能会疑惑,为啥hello world 打印不用加双引号,这是因为shell中默认是字符类型的,会默认把hello world 认为是字符串,这里只是为了演示这个事情,一般书写还是要用引号括上比较好,单引号跟双引号还存在不同,下面我们再慢慢讲)。

上面的代码我们添加可执行权限,并且执行后,结果如下:

chmod +x 给我们编写的脚本赋予可执行权限,然后可以使用 ./ 进行执行(使用./, sh执行,使用source 也可以执行,这几种执行方式也存在一点区别,后面再讲)。

我们看到,正常打印出了hello world。

一般学习一门语言,就是从hello world 开始的,但是,各位小哥哥小姐姐们可能下面就开始不满意了,如果我需要格式化输出怎么办呢? 总不能啥东西都有echo 打字符串吧?

没问题啊,shell 提供了原生的格式化打印命令printf。

下面来看如下脚本,比上面那个echo 略复杂一点儿:

然后我们来解释一下,上面的代码的含义。

printf 是我们的格式化打印的关键字,后面跟着一串格式化字符串。

printf "%-5s %-10s %-4s\n" NO NAME Marks
# 我们就拿第一行举例子说明一下。
# 每个格式化项都以%开头,其中的 -
# 代表左对齐,后面跟的5代表对齐的
# 字符长度,后面跟着的s 代表后面是
# 字符串类型
s 代表字符串,f 代表浮点类型,d代表整数类型等
总结:
%-4.2f 就是代表打印项类型是浮点,小数点保留2位,四个字符对齐

上面的脚本执行结果如下:

好的,今天就先到这里了,由于是第0期,主要是给大家介绍下shell 脚本的背景知识和简单打印,从下一期开始,给大家介绍如何使用shell 脚本中的变量,以及变量定义,变量的其它高级用法。

这会是一整个系列,如果大家感兴趣的话,不妨关注一下,后期会按时给大家更新内容,以及我们在真实工作中的使用案例。

相关推荐

linux进程间的通信方式有哪些(linux怎么看这个进程在哪个路径下)

管道通信(PIPE)两个进程利用管道进行通信时.发送信息的进程称为写进程.接收信息的进程称为读进程。管道通信方式的中间介质就是文件.通常称这种文件为管道文件.它就像管道一样将一个写进程和一个读进程连接...

Linux守护进程 daemonize 命令(linux 守护进城)

daemonize:作为守护进程运行命令的工具daemonize是一个命令行实用程序,它作为Unix/Linux守护进程运行命令。daemonize工具是用C语言编写的。大多数程序被设计为作为守护...

linux进程间通信—信号(linux查看进程之间的通信指令i)

Linux环境进程间通信(二)信号(下)一、信号生命周期从信号发送到信号处理函数的执行完毕对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个...

Linux 上以树状查看文件和进程(linux如何查看进程树)

提供了一些方便的命令,用于以树状分支形式查看文件和进程,从而易于查看它们之间的关系。在本文中,我们将介绍、和命令以及它们提供的一些选项,这些选项可帮助你将注意力集中在要查看的内容上。ps我们用...

文件搜不到?进程理不清?掌握这3个Linux技巧,效率直接翻倍!

哎家人们,今天必须跟你们唠唠Linux里那些“用了就回不去”的效率神器!我猜屏幕前肯定有不少朋友跟我之前一样——明明装着Linux当开发机/服务器,结果每天被命令行折腾得够呛:找个文件翻遍目录,看进程...

如何在 Linux 中使用 PID 号查找进程名称?

在Linux的复杂世界中,进程是系统运行的核心,每个进程都由一个唯一的「进程ID」(PID)标识。无论是系统管理员在排查失控进程,还是开发者在调试应用程序,知道如何将PID映射到对应的进程名称都是一项...

Linux进程深度解析(1):进程结构、内存布局与资源管理

0.简介进程是系统执行的核心单元,理解进程是我们诊断性能问题、开发高并发程序的基础。Linux进程深度解析系列将会从原理角度对进程进行深入分析,帮助读者系统的理解其设计的思路,让读者在理解原理的基础...

Linux 下如何查看进程的资源限制信息?

简介Linux上的cat/proc/$pid/limits命令提供有关特定进程的资源限制的信息,其中$pid是相关进程的进程ID(pid)。该文件是`/proc文件系统的一部分,该...

Linux 8种进程状态及状态转换(linux进程状态切换)

Linux8种进程状态通过psaux可以看到进程的状态。O:进程正在处理器运行,这个状态从来没有见过.S:休眠状态(sleeping)R:等待运行(runable)RRunningorrun...

如何查看linux后台运行的进程?如何查看后台运行进程的状态?

linux系统中挂在后台的进程,如何能够被运维人员知道呢?以及挂在后台的进程当前状态是怎样的?是否可以继续执行?如何杀死一个在后台挂起的进程?后台进程可以通过‘&’符号或nohup命令,让程序进入...

最新保姆级、超详细介绍VMware的使用(一)软件的安装

一、VMware简介VMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMware采用了完全不同的概...

Shell脚本怎么写?(0)(shell脚本怎么写变量)

各位不好意思,最近加班+感冒,有三四天没更新了,python自动化脚本系列总共六期,基本已经囊括了编写python自动化脚本的所有基础函数和语法了。大家如果没看过这个系列的话,可以参考下面的链接:...

用Python从头开发一个自己的Shell(下)

编程派微信号:codingpy平常工作中经常用到shell吧?好不好奇shell的具体执行方式?今天推送的这两篇文章,将利用Python实现一些简单的shell功能。本文原作者为Su...

Linux编程Shell之入门——Shell函数返回值

在Shell中,函数可以通过返回值将结果传递给调用者。返回值可以是一个整数、字符串或其他类型的数据。以下是关于Shell函数返回值的详细介绍:使用return语句在Shell函数中,使用return...

Linux shell编程中易混淆的符号(linux中shell编程详解)

符号主要功能执行环境是否解析变量典型用例()子Shell执行命令子进程是隔离环境操作{}代码块或扩展当前Shell是(代码块内)组合命令或生成序列""弱引用字符串-是含变量...