在 fish 中测试命令替换输出

Testing command substitution output in fish

another question 关于测试 特定 字符串的命令替换。我想测试一个命令是否在单个语句中输出 anything,即相当于:

if [[ -n "$(foo)" ]]

在 bash 中。鱼不认识 [[]]

if [ -n "(foo)" ]  # No good, "(foo)" is literal.
if [ -n (foo) ] # Passes only if (foo) == "\n" because of test semantics.

行不通,我必须

set check (foo)
if [ -n "$check ]

有没有可能我错过了这里?

据我所知,在 Fish 中无法使用字符串替换。

您可以关注 #159 issue 以获取有关当前解决方案的更多信息。

这应该有效:

if count (foo) > /dev/null

在鱼中,我们必须使用 test 而不是 [[[

if test -n (foo)
  echo not empty
end

或者,bash [[ -n $(foo) ]] && echo not empty 等价于

test -n (foo); and echo not empty