参数替换之${parameter+default}和${parameter:+default}

1.${parameter+default}和${parameter:+default}

${parameter+default},如果变量parameter被声明了,那么就使用default,否则就使用null字符串

${parameter:-+default},如果变量parameter被设置了,那么就使用default,否则就使用null字符串

 ${parameter+default}和${parameter:+default}在绝大多数的情况下,都是相同的,只有在parameter已经被声明,但是值为空的时候,这个额外的“:”才会产生不同的结果,即:其值也会为空

2.实例

脚本样例:

#!/bin/bash

a=${variable1+`whoami`}
echo "a = $a"
#其结果为空

variable2=
a=${variable2+`whoami`}
echo "a = $a"
#其结果为whoami的执行结果值

variable3=ztj
a=${variable3+`whoami`}
echo "a = $a"
#其结果为whoami的执行结果值

a=${variable4:+`whoami`}
echo "a = $a"
#其结果为空

variable5=
a=${variable5:+`whoami`}
echo "a = $a"
#重点:其结果为空。

variable6=ztj
a=${variable6:+`whoami`}
echo "a = $a"
#其结果为whoami的执行结果值

exit 0

结果:

a = 
a = root
a = root
a = 
a = 
a = root

相关推荐

  1. 参数替换${parameter+default}${parameter:+default}

    2024-02-23 10:12:01       38 阅读
  2. 数仓工具—Hive语法替换函数示例

    2024-02-23 10:12:01       23 阅读
  3. vim搜索替换

    2024-02-23 10:12:01       49 阅读
  4. SpringMVC获取请求参数域对象共享数据

    2024-02-23 10:12:01       50 阅读
  5. 「BUG」启动jar配置文件里的参数无法替换

    2024-02-23 10:12:01       59 阅读
  6. 将SQL中的占位符替换参数

    2024-02-23 10:12:01       17 阅读
  7. 面向对象设计里氏替换原则

    2024-02-23 10:12:01       41 阅读
  8. vim 基本命令查找替换

    2024-02-23 10:12:01       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-23 10:12:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-23 10:12:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-23 10:12:01       87 阅读
  4. Python语言-面向对象

    2024-02-23 10:12:01       96 阅读

热门阅读

  1. Visual Studio快捷键记录

    2024-02-23 10:12:01       50 阅读
  2. 如何基于prompt来构建大模型AI产品?

    2024-02-23 10:12:01       54 阅读
  3. 数据结构:顺序表

    2024-02-23 10:12:01       48 阅读
  4. 设计模式-原型模式

    2024-02-23 10:12:01       46 阅读
  5. FFmpeg部分数据结构简介

    2024-02-23 10:12:01       40 阅读
  6. Spring、SpringBoot、SpringCloud三者的区别

    2024-02-23 10:12:01       55 阅读
  7. 技术心得--如何成为优秀的架构师

    2024-02-23 10:12:01       57 阅读