gpt4 book ai didi

bash - 花括号中的变量扩展

转载 作者:行者123 更新时间:2023-11-29 08:45:35 25 4
gpt4 key购买 nike

这是代码

a=''
b=john
c=${a-$b}
echo $c

输出为空行

对于第一个变量未初始化的类似代码

b1=doe
c1=${a1-$b1}
echo $c1

输出是

doe

我不明白 bash 如何处理导致不同结果的变量扩展。

最佳答案

${var-value} 有两种变体符号,一种不带冒号,如图所示,一种带冒号:${var:-value} .

第一个版本没有冒号,意思是“如果$var设置为任何值(包括空字符串),使用它;否则,使用 value相反'。

第二个版本,带冒号,意思是'if $var设置为除空字符串以外的任何值,使用它;否则,使用 value相反'。

此模式也适用于其他变量替换,特别是:

  • ${var:=value}
    • 如果$var设置为任何非空字符串,保持不变;否则,设置 $varvalue .
  • ${var=value}
    • 如果$var设置为任何值(包括空字符串),保持不变;否则,设置 $varvalue .
  • ${var:?message}
    • 如果$var设置为任何非空字符串,什么都不做;否则,使用给定的消息提示(如果 message 本身为空,则提供默认消息)。
  • ${var?message}
    • 如果$var设置为任何值(包括空字符串),什么都不做;否则,使用给定的消息进行投诉。

这些符号都适用于任何 POSIX 兼容的 shell(Bourne、Korn、Bash 等)。您可以找到 bash 的手册在线版本 — 在 Shell Parameter Expansion 部分. Bash 也有许多非标准符号,其中许多非常有用但不一定与其他 shell 共享。

关于bash - 花括号中的变量扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14152534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com