我正在编写一个bash shell脚本。它需要一个必选的第一个参数,我希望有一个可选的第二个参数。
如果省略第二个参数,我希望它使用第一个参数的值。
目前我的代码如下:
SOMEVAR=${2:-Untitled}
如何使用像basename $1
这样的东西,而不是Untitled
?
SOMEVAR=${2:-$(basename“$1”)}
。您可以在可选部分中使用任何shell或变量。直接使用命令替换: $(basename $1)
,代替Untitled
。
然而,bash也有在没有外部进程的情况下完成此操作的能力:${1##*/}
SOMEVAR=${2:-${1##*/}}
${1##*/}
е’Ң$(basename $1)
жҳҜзӯүд»·зҡ„еҗ—пјҹ - alfonso${1##*/}
并不等同于$(basename $1)
。例如,如果你有dir=/
并尝试${dir##*/}
,你将得到空值,而$(basename "$dir")
会给你/
。 - norcalli
${2-Whatever}
(不带“:”)来检查$2
是否 未定义,而不是空或未定义。 - l0b0