52

Fishの2つの文字列を("abc" == "def"他の言語のように)どのように比較しますか?

これまでのところ、contains(が空の文字列の場合にcontains "" $aのみ返されることがわかりましたが、すべての場合に機能するとは限りませんでした)と(aとaを使用)の組み合わせを使用しました。ただし、これらの方法はどちらも特に...正しいようには見えません。0$aswitchcase "what_i_want_to_match"case '*'

4

2 に答える 2

51
  if [ "abc" != "def" ] 
        echo "not equal"
  end
  not equal

  if [ "abc" = "def" ]
        echo "equal"
  end

  if [ "abc" = "abc" ]
        echo "equal"
  end
  equal

または1つのライナー:

if [ "abc" = "abc" ]; echo "equal"; end
equal
于 2012-06-19T22:09:12.597 に答える
18

のマニュアルにtestはいくつかの役立つ情報があります。で利用できますman test

Operators for text strings
   o STRING1 = STRING2 returns true if the strings STRING1 and STRING2 are identical.

   o STRING1 != STRING2 returns true if the strings STRING1 and STRING2 are not
     identical.

   o -n STRING returns true if the length of STRING is non-zero.

   o -z STRING returns true if the length of STRING is zero.

例えば

set var foo

test "$var" = "foo" && echo equal

if test "$var" = "foo"
  echo equal
end

の代わりに[andを使用することもできます。]test

魚の偽物である空の文字列または未定義の変数をチェックする方法は次のとおりです。

set hello "world"
set empty_string ""
set undefined_var  # Expands to empty string

if [ "$hello" ]
  echo "not empty"  # <== true
else
  echo "empty"
end

if [ "$empty_string" ]
  echo "not empty"
else
  echo "empty"  # <== true
end

if [ "$undefined_var" ]
  echo "not empty"
else
  echo "empty"  # <== true
end
于 2015-03-20T23:19:29.603 に答える