小编典典

如何编写带有可选输入参数的 bash 脚本?

all

我希望我的脚本能够接受可选输入,

例如,目前我的脚本是

#!/bin/bash
somecommand foo

但我想说:

#!/bin/bash
somecommand  [ if $1 exists, $1, else, foo ]

阅读 90

收藏
2022-03-04

共1个答案

小编典典

您可以使用默认值语法:

somecommand ${1:-foo}

以上将,如Bash 参考手册 - 3.5.3 Shell Parameter
Expansion
[emphasis mine] 中所述:

如果 parameter 未设置 或为 null ,则替换 word 的扩展。否则,参数的值被替换。

如果您只想在参数未设置的情况下替换默认值(但如果它为空则不替换,例如,如果它是空字符串则不替换),请改用以下语法:

somecommand ${1-foo}

再次来自Bash Reference Manual - 3.5.3 Shell Parameter
Expansion

省略冒号会导致仅对未设置的参数进行测试。换句话说,如果包含冒号,则运算符测试参数是否存在以及它的值不为空;如果省略冒号,则运算符仅测试是否存在。

2022-03-04