linux shell 参数可选,如何编写一个带有可选输入参数的bash脚本?

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

我希望我的脚本能够获取可选输入,

例如 目前我的剧本是

#!/bin/bash

somecommand foo

但我想说:

#!/bin/bash

somecommand [ if $1 exists, $1, else, foo ]

8个解决方案

493 votes

您可以使用default-value语法:

somecommand ${1:-foo}

以上将如Bash参考手册中所述 - 3.5.3 Shell参数扩展[强调我的]:

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

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

somecommand ${1-foo}

再次从Bash参考手册 - 3.5.3 Shell参数扩展:

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

Itay Perl answered 2019-02-02T05:30:03Z

183 votes

您可以为变量设置默认值,如下所示:

somecommand.sh

#!/usr/bin/env bash

ARG1=${1:-foo}

ARG2=${2:-bar}

ARG3=${3:-

你可能感兴趣的:(linux,shell,参数可选)