空、未割り当て、またはエラーがある場合は、BASH変数に値を割り当てる方法は? [コピー]

空、未割り当て、またはエラーがある場合は、BASH変数に値を割り当てる方法は? [コピー]

私はこのJS課題と同等のものを探しています。

FOO = FOO || "I must have been falsey!";

答え1

どちらかこれらの拡張課題を完了する特定の時間に応じて探していることがあります。

コロンを省略すると、設定されていないパラメータのみがテストされます。 [...]

${parameter:-word}

引数が設定されていないか空の場合、単語の拡張が置き換えられます。それ以外の場合、パラメータ値は置き換えられます。

${parameter:=word}

引数が設定されていないか空の場合、単語の拡張が引数に割り当てられます。次に、パラメータの値を置き換えます。位置パラメータと特殊パラメータはこの方法で割り当てることはできません。

初めて使用する場合にのみデフォルト値を設定するには:

some-command "${FOO:=default value}"
other-command "$FOO"  # both use "default value" if FOO was null/unset

これを明示的に作成したい場合は、次のようにします。

FOO="${FOO:-default value}"
some-command "${FOO}"

答え2

「偽」が何を意味するかによって異なります。 Bashには特別な値Trueやがないので、False「false」値は0だけです。その後、変数を空の文字列に設定または設定解除できます。

  1. 変数が設定されていない場合、またはNULL()または空の文字列に設定されている場合は、\0変数を設定します。

     ## unset variable
     $ foo=${foo:="I must have been unset empty or null!"}
     $ echo "$foo"
     I must have been unset, empty, or null!
    
     $ foo="" ## set to the empty string  
     $ foo=${foo:="I must have been unset, empty, or null!"}
     $ echo "$foo"
     I must have been unset, empty, or null!
    
  2. 現在の値がfalse(0)の場合は変数を設定します。

     $ foo=0
     $ (($foo)) ||  foo="I must have been unset, empty, or null!"
     $ echo "$foo"
     I must have been unset, empty, or null!
    

関連情報