Bash脚本语法解析(典例精讲)

news/2024/10/11 2:29:55

  参考资料:

  https://github.com/AUTOMATIC1111/stable-diffusion-webui

  https://razeen.me/posts/the-ultimate-programmers-guide-to-bash-scripting/

  众所周知.sh文件是Linux系统中的脚本文件。(与之相对的还有windows系统上对应cmd的bat文件,对应powershell的ps1文件?)因此掌握bash脚本的语法(或许zsh等shell用的也都是.sh文件?)是十分重要的,不求会写,起码要看的懂。下面通过一个我认为非常好的典例来讲解一下bash脚本的语法。1

  1. 美元符号

  美元符号的作用是取变量。例如:

WORLD="helllo world"
echo ${WORLD}

  会打印hello world。

  2. 单引号、双引号和反引号

  单引号会将它框住的任何事物视作字符,双引号在遇到美元符号$和反引号的时候会先翻译,反引号相当于美元符号加括号$(),其作用是将命令的输出取出来。

  3. 单右箭头>和双右箭头>>

  单右箭头表示重定向,会覆盖文件。双右箭头表示追加。

  4. IF语句

   bash脚本中if和then以及fi同时出现。这里有两个需要注意的点,一个是双中括号比单中括号常用的多,见参考资料;另一个是空格问题,在逻辑运算符之间需要加空格,否则会判断为一个字符串而认为是True

  这里需要注意的是双括号里面常常会配合一种叫文件测试表达式的东西:

  以及字符串比较表达式:

  下面是标注的用法和一个典型的例子:

if [ condition-is-true ]
thencommand A
elsecommand B
fi# 或
if [ condition-is-true ]; thencommand A
elsecommand B
fi# 例子:
#!/bin/bash
MY_SHELL="csh"
if [ "$MY_SHELL" = "bash" ]
thenecho "You are using the bash shell."
elseecho "You are not using the bash shell."
fi

  5. 逻辑与(&&)和逻辑或(||)

  当逻辑与前面的语句返回的状态码为0时,执行后面的语句

  当逻辑或前面的语句返回的状态码非零(执行失败时),执行后面的语句

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/27475.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

csapp-bomblab(自信满满版)

反汇编bomb文件 要查看机器代码文件的内容,有一类称为反汇编器(disassembler,assembler是汇编程序,dis-加在某些词语前表示相反的意思)的程序非常有用。这些程序根据机器代码产生一种类似于汇编代码的格式。在linux系统中,带‘-d’命令行标志的程序OBJDUMP(表示“object…

Windows系统,在Pycharm里面(python3.9)下载dlib的依赖包的具体步骤

原文作者:传送门 1、进入网址 轮子地址 然后选择这个下载:2、保存到自己的项目里面,然后使用pip的命令下载pip命令如下: pip install dlib-19.23.0-cp39-cp39-win_amd64.whl使用pip list的命令查看已经下载的包: dlib依赖包下载完成!

Python进阶篇笔记

一、面向对象 1、面向过程与面向对象面向过程:把程序流程化 面向对象:把程序抽象成类,类与类之间有联系2、类与对象 对象就是容器,是用来存放数据和功能的,对象就是数据和功能的集合 类的作用是吧对象做区分和归类,以及解决不同对象存相同数据的问题。类也是容器,也是用…

团队作业3—需求改进系统设计

这个作业属于哪个课程 软件工程这个作业要求在哪里 团队作业3—需求改进&系统设计这个作业的目标 1、需求&&原型改进 2、系统设计 3、Alpha任务分配计划 4、测试计划其他参考文献 架构设计、Scrum/Sprint、测试的计划和执行这个作业所属团队 SuperNewCode团队成员 …

扫描线

题目链接 https://leetcode.cn/problems/rectangle-area-ii/ 题目大意题目思路选取连续的x值:(left,right),在这个区间内,沿着x轴的方向扫描,求出所有符合条件的(y1,y2) 算出扫描区间的h,结合 w * h,算出面积! 礼貌拿图,多谢三叶姐(https://leetcode.cn/problems/recta…

图床搭建(零成本)

图床搭建(零成本) 基于博客园搭建图床,目前最好的,最简便以及无成本的性价比最高的方法 前言: 使用typora发布博客以及发送给朋友md文档需要打包成压缩包,csdn还无法解码url, 于是搭建免费版github+pic图床,但github图床限制1G,超过就会有人工审核,并且传输不稳定,时…

Osektp.Dll基础解读

前言 OSEKTP是15765的核心组件,也是Autosar操作系统的基础组件,目前仍在应用于Autosar-CP之中。 OsekTP.DLL 功能介绍 Vector称基于ISO15765-2的CAN传输层行为称为OSEK-TP/CAN-TP。 并开发出OSEKTP.DLL的传输层接口以供Capl调用,DLL支持指定单帧及多帧发送、故障注入、流控帧…