首页 > 其他分享 >Bash脚本语法解析(典例精讲)

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

时间:2024-05-04 16:22:18浏览次数:30  
标签:语句 典例 脚本 精讲 箭头 command Bash fi bash

  参考资料:

  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 ]
then
  command A
else
  command B
fi

# 或
if [ condition-is-true ]; then
  command A
else
  command B
fi

# 例子:
#!/bin/bash
MY_SHELL="csh"
if [ "$MY_SHELL" = "bash" ]
then
  echo "You are using the bash shell."
else
  echo "You are not using the bash shell."
fi

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

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

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

标签:语句,典例,脚本,精讲,箭头,command,Bash,fi,bash
From: https://www.cnblogs.com/chester-cs/p/18171379

相关文章

  • Linux bash常用命令案例记录
    scp(iftheprivatekeyisid_rsa,[-i]canberemoved)scp-ikey-Pportlocalfileuser@ip:pathbacktothebeginningoflineCtrl+agototheendoflineCtrl+ecutcharacterfromcurrentpositiontothebeginningCtrl+ucutchara......
  • BSP视频教程第30期:UDS ISO14229统一诊断服务CAN总线专题,常用诊断执行流程精讲,干货分享
    视频教程汇总帖:https://www.armbbs.cn/forum.php?mod=viewthread&tid=110519 【前言】1、继前面分享了CANopen和J1939的专题后,这次继续为大家分享UDS专题视频第1期。2、统一诊断服务(UnifiedDiagnosticServices,简称UDS)是车用电子的通信协议,是电子控制器ECU中设备诊断用的网......
  • Shell 脚本(Bash 版)
    0x01概述(1)Shell简介Shell是一个命令行解释器flowchartLR用户输入命令-->接收并将命令传递给内核执行-->将命令执行的结果返回给用户Shell种类丰富,包括sh、csh、ksh、bash、zsh、fish等以下内容使用的是bash(BourneAgainShell)Linux系统中默认安装的是bashW......
  • Linux中bash: ls: 未找到命令… 相似命令是: ‘lz‘
    Linux中bash:ls:未找到命令…相似命令是:‘lz‘出错现象Linux中bash:ls:未找到命令…相似命令是:‘lz‘发现ls不能用了、ll、vi、vim都不能用了。输入ll命令提示:bash:ls:未找到命令…相似命令是:‘lz’出错原因环境变量PATH被修改了,是刚刚操作的修改影响......
  • Go语言高并发与微服务实战专题精讲——远程过程调用 RPC——优化RPC调用,缓解频繁请求
    远程过程调用RPC——优化RPC调用,缓解频繁请求导致的GC压力 在Go语言的高并发和微服务架构中,远程过程调用(RPC)是一种常用的通信机制。然而,当频繁发送RPC请求时,不断创建Request和Response结构体可能会带来额外的垃圾收集(GC)压力,进而影响应用的性能和响应时间。为了减......
  • Go语言高并发与微服务实战专题精讲——远程过程调用 RPC——客户端处理RPC请求的原理
    远程过程调用RPC——客户端处理RPC请求的原理及源代码分析 客户端无论是同步调用还是异步调用,每次RPC请求都会生成一个Call对象,并使用seq作为key保存在map中,服务端返回响应值时再根据响应值中的seq从map中取出Call,进行相应处理。 客户端发起RPC调用的过程大致如下所示,我们......
  • bash脚本的输入参数解析
    #!/usr/bin/envbash#############################################用途:用于脚本输入参数的规范处理#测试:假设文件名为test.sh,执行./test.sh--daemon--helper=abc--host_type=os############################################curdir=`dirname"$0"`echo"curdi......
  • Go语言高并发与微服务实战专题精讲——远程过程调用 RPC——服务端注册实现原理分析
    远程过程调用RPC——服务端注册实现原理分析rpcserver代码参考我前一篇博文:https://www.cnblogs.com/zuoyang/p/18146870RPCServer端的RPC代码架构主要由两大部分构成:第一部分是服务方法的注册过程。在这个过程中,我们首先通过调用rpc.Register接口将服......
  • Go语言高并发与微服务实战专题精讲——远程过程调用 RPC——实践案例:Go 语言 RPC 过程
    远程过程调用RPC——实践案例:Go语言RPC过程调用实践 Go语言的官方RPC库/net/rpc为开发者提供了实现远程过程调用的强大功能,使得通过网络访问对象的方法成为可能。这种机制极大地促进了分布式系统的构建,让不同的服务能够轻松地进行相互通信和协作。 在使用Go的RPC库时,服务......
  • Go语言高并发与微服务实战专题精讲——远程过程调用 RPC
    远程过程调用RPC 在微服务架构中,每个服务实例负责某一单一领域的业务实现,不同服务实例之间需要进行频繁的交互来共同实现业务。服务之间通过轻量级的远程调用方式进行通信。比如说RPC和HTTP。两者虽然同为微服务实例之间远程调用的方式,但是HTTP调用是应用层协议,而RPC的......