Bashはbool関数の変数の結果を割り当ててから確認します。

Bashはbool関数の変数の結果を割り当ててから確認します。

0 または 1 (たとえば true または false) を返し、引数を使用する関数を作成し、別の関数に変数を作成してその関数の結果を保存しようとします。最後に、変数が0または1(trueまたはfalse)であることを確認します。

以下は私が試しているものの例です。

#!/bin/bash

_has_string() {
  if [ $1 == "string" ];
    return 0
  else
    return 1
  fi
}

_my_func() {
  var=$(_has_string "string")
  if [ $var == "0" ]; then
    echo "var contains string"
  else
    echo "var does not contain string"
  fi
}

_my_func

私はいくつかのバリエーションを試しましたが、うまくいく方法を見つけることができないようです。私のすべてのバリアントは基本的に何も返しません$var。 0ではありません。空ではありません。文字通り、空です。

ベストアンサー1

出力を終了コードと混同しています。

_my_func() {
  if _has_string 'string'; then

また、変数を引用する必要があります。これは_has_string次のように単純化できます。

_has_string() {
    [ "$1" = 'string' ]
}

おすすめ記事