gpt4 book ai didi

bash:删除空参数

转载 作者:行者123 更新时间:2023-11-29 09:34:39 24 4
gpt4 key购买 nike

我想知道是否可以减少以下示例中的最后四行:

#!/bin/bash

function xxx {
echo $#
echo $1
}

[[ -n $SOME_ENV ]] && P="-Dabc=$SOME_ENV"

if [[ -n $P ]]; then
xxx "$P" abc
else
xxx abc
fi

用 just 替换 if-else-fi

xxx "$P" abc

如果 $P 不为空则有效,否则无效,因为 ""仍然算作空参数。如果 SOME_ENV 包含空格,则省略 $P 周围的引号不起作用。我知道“评估”是可能的,但评估是邪恶的:http://mywiki.wooledge.org/BashFAQ/048

还有其他解决方案吗?

最佳答案

我喜欢using an array最好的。另一种方法,就其值(value)而言,是使用 alternate value替换。

xxx ${P:+"$P"} abc

如果 $P 已设置且不为空,这将被替换为 "$P"。如果为空,则删除整个单词。巧妙的是,您可以完全摆脱 $P

xxx ${SOME_ENV:+"-Dabc=$SOME_ENV"} abc

关于bash:删除空参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38445238/

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