首页 > 其他分享 >${VAR:=默认值}和${VAR:-默认值} 区别

${VAR:=默认值}和${VAR:-默认值} 区别

时间:2024-03-25 12:23:59浏览次数:27  
标签:变量 区别 echo 设置 VAR 默认值 Hello

当然可以,以下是${VAR:=默认值}${VAR:-默认值}在实际使用中的例子:

例子 1:使用${VAR:=默认值}

bash复制代码
  #!/bin/bash
   
  # 假设VAR变量尚未设置
  echo "原始VAR的值: $VAR" # 输出:原始VAR的值: (空行)
   
  # 使用${VAR:=默认值}
  echo "VAR的值(若未设置则为默认值): ${VAR:=Hello}" # 输出:VAR的值(若未设置则为默认值): Hello
   
  # 注意:此时VAR的值已经被设置为"Hello"
  echo "现在VAR的值: $VAR" # 输出:现在VAR的值: Hello

在这个例子中,${VAR:=Hello}不仅返回了"Hello",而且将VAR的值设置为了"Hello"。

例子 2:使用${VAR:-默认值}

bash复制代码
  #!/bin/bash
   
  # 假设VAR变量尚未设置
  echo "原始VAR的值: $VAR" # 输出:原始VAR的值: (空行)
   
  # 使用${VAR:-默认值}
  echo "VAR的值(若未设置则为默认值): ${VAR:-Hello}" # 输出:VAR的值(若未设置则为默认值): Hello
   
  # 注意:此时VAR的值仍然是未设置的
  echo "现在VAR的值: $VAR" # 输出:现在VAR的值: (空行)

在这个例子中,${VAR:-Hello}返回了"Hello",但是VAR的值仍然未设置。

这两个例子清晰地展示了${VAR:=默认值}${VAR:-默认值}之间的区别。第一个语法不仅返回默认值,还设置变量的值;而第二个语法只返回默认值,不改变变量的值。根据你的需求,你可以选择使用哪一个。如果你想要检查变量是否设置,并且如果未设置则使用默认值,但不希望改变变量的值,那么应该使用${VAR:-默认值}。如果你想要在变量未设置时使用默认值,并且希望这个默认值成为变量的新值,那么应该使用${VAR:=默认值}

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back  

标签:变量,区别,echo,设置,VAR,默认值,Hello
From: https://www.cnblogs.com/gaoyuechen/p/18094101

相关文章

  • Drop 、Delete、Truncate的区别是什么
    Drop、Delete、Truncate的区别是什么?DROP删除表结构和数据,truncate和delete只删除数据truncate操作,表和索引所占用的空间会恢复到初始大小;delete操作不会减小表或索引所占用的空间;drop操作释放表或索引的占用空间。truncate和drop是DDL,操作立即生效,delete是DML,......
  • yum和apt的区别
    yum和apt的区别apt-get和yum的区别一、linux系统分类一般来说linux系统基本上分两大类:RedHat系列:Redhat、Centos、Fedora等Debian系列:Debian、Ubuntu等RedHat系列常见的安装包格式rpm包,安装rpm包的命令是“rpm-参数”包管理工具yum支持tar包Debian系列常见的安......
  • 5个主流跨端框架及区别对比
    最近前端届多端框架频出,相信很多有代码多端运行需求的开发者都会产生一些疑惑:这些框架都有什么优缺点?到底应该用哪个?作为Taro开发团队一员,笔者想在本文尽量站在一个客观公正的角度去评价各个框架的选型和优劣。但宥于利益相关,本文的观点很可能是带有偏向性的,大家可以带着批判......
  • 什么是Linux?它与其他操作系统有何区别?
    什么是Linux?它与其他操作系统有何区别?什么是Linux?它与其他操作系统有何区别?摘要引言正文内容了解LinuxLinux与其他操作系统的区别开放性多样性安全性......
  • 同构图和异构图、有向图和无向图的区别?
    同构图和异构图、有向图和无向图是图论中的几个重要概念,它们的主要区别如下:同构图与异构图的区别:同构图指的是两个图结构完全相同,即点数相同、边数相同,且每条对应边连接的顶点也一一对应。形式化定义为:如果存在一个双射f,使得对图G中任意两点u,v,有(u,v)是G......
  • immer 和useImmer两个库有啥区别
    immer和useImmer两个库有啥区别immer和useImmer是两个紧密相关的库,但它们在用途上有一定的区别:immer:immer是一个JavaScript库,专注于提供一种简洁高效的不可变数据管理方式。它利用Proxy对象和WeakMap实现了所谓的“proxy-basedimmutability”,允许开发者以直观的可......
  • 如何选择合适的系统?MES系统和MOM系统的区别
    制造业中的信息化系统有多种形式,其中最常见的可能就是制造执行系统(MES)和制造运营管理(MOM)。尽管这两种系统都在制造业中发挥着重要作用,但它们之间的区别和联系仍然是许多人的疑惑。一、MES和MOM的定义MES,即制造执行系统,是一种在工厂生产制造中进行过程控制、工艺变量跟踪、文......
  • java中for ( i = 0; i < 3; i++)和for (int i = 0; i < 3; i++)有什么区别
    在Java中,for(i=0;i<3;i++)和for(inti=0;i<3;i++)之间的主要区别在于变量的作用域。for(i=0;i<3;i++):这种形式的循环使用了一个已经在循环之前声明的变量i。这通常发生在变量i在循环之前已经在其他地方被声明和初始化。javainti;//变量i在此处声......
  • MyBatis3源码深度解析(二十一)动态SQL实现原理(二)动态SQL解析过程、#{}和${}的区别
    文章目录前言8.5动态SQL解析过程8.5.1SQL配置转换为SqlSource对象8.5.2SqlSource转换为静态SQL语句8.6#{}和${}的区别8.7小结前言在【MyBatis3源码深度解析(二十)动态SQL实现原理(一)动态SQL的核心组件】中研究了MyBatis动态SQL相关的组件,如SqlSource用于描述......
  • function函数和箭头函数的区别,用法和功能方面的区别
    在JavaScript中,普通函数(functionfunctions)和箭头函数(arrowfunctions)有一些区别,包括用法和功能方面的不同之处:语法:普通函数使用关键字 function 来声明函数,例如:functionmyFunction(){...}。箭头函数使用箭头 => 来声明函数,例如:constmyFunction=()=>{...}......