Shell-Script

用fish測試標準輸出

  • November 21, 2020

我有一個將字元串列印到終端的腳本,我想檢查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!

test並且set不明白這-意味著“從標準輸入讀取”。改用read

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

我不是 100% 確定,但我不認為這些命令set可以if從標準輸入獲取輸入。

我查看了https://github.com/fish-shell/fish-shell/issues/6173

而且看起來里面有點奇怪testfish我無法解決。然而,這有效。

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

在 bash 中就是這個

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

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

引用自:https://unix.stackexchange.com/questions/620792