用鱼测试标准输出

用鱼测试标准输出

我有一个将字符串打印到终端的脚本,我想检查myScript输出的值。(在本例中resultString

我尝试过这个方法,但没有成功。

(为了简单起见,我用以下内容替换了我的脚本,echo something因此输出是'something'在这种情况下。)

echo something | 
    if test - = something
        echo true
    else
        echo false
    end
# this prints the false while it should be true!

还尝试将输出设置为变量,但也不起作用。

echo something |
    set x -;
    if test $x = something
        echo true
    else
        echo false
    end
# this prints the false while it should be true!

答案1

test并且set不明白这-意味着“从标准输入读取”。改用read

echo something |
    read x
if test "$x" = something
    echo true
else
    echo false
end

答案2

我不是 100% 确定,但我不认为这些命令set可以if从标准输入获取输入。

我抬头看着https://github.com/fish-shell/fish-shell/issues/6173

而且似乎test有点奇怪fish。我无法解决这个问题。然而这有效。

if /usr/bin/test (someCommand) = "hello"
   echo t
else
   echo f
end

在 bash 中是这样的

if test "$(someCommand)" = "hello"
then
  echo t
else
  echo f
fi

一定有更好的答案。但这有效。

相关内容