gpt4 book ai didi

Bash "coalesce"功能

转载 作者:行者123 更新时间:2023-11-29 09:32:21 25 4
gpt4 key购买 nike

我正在尝试在一行中执行以下操作:

if [ -z "$foo" ]
then
source "$foo/subdir/yo.sh"
else
source "$bar/yo.sh"
fi

(注意子目录仅在使用 foo 时存在)。到目前为止最简单的解决方案是:

source "${foo:-$bar}${foo:+/subdir}/yo.sh"

换句话说,获取 foo 或 bar,如果 foo 存在,则附加 /subdir。有没有更优雅的方法来做到这一点?

最佳答案

试试这个:

$((printf $foo 2>/dev/null && printf '/subdir') || printf $bar)/yo.sh

虽然有点令人费解。

此解决方案的关键方面是找到一种方法来输出 $foo 的内容(如果有),并同时根据 $foo 中是否有内容进行分支。没有参数的 printf 是错误的,没有内容的 $foo 导致 printf 没有参数。之后剩下的就很简单了。

出于这个原因,第一个 printf 需要是 printf,但如果您愿意,其他的可以替换为 echo -n

关于Bash "coalesce"功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4143503/

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