GNU/Linux >> Linux の 問題 >  >> Linux

ここで、変数名の後の「-」(ダッシュ) は何をしますか?

通常、${FOO-} ${FOO} とまったく同じように動作します .

ただし、set -u では 、設定されていない変数の展開はデフォルトでエラーになります。

だから ${FOO} エラーかもしれませんが、${FOO-}


${...} 内の変数 « パラメータ展開 » と呼ばれます。
オンライン マニュアルまたは実際のマニュアルでその用語を検索してください (792 行目)。
${var-} フォームは ${var:-} とフォームが似ています . :- の 1 行前に違いが説明されています。 拡張 (810 行目):

<ブロック引用>

... 未設定または null のパラメーターの bash テスト。コロンを省略すると、設定されていないパラメーターに対してのみテストが行​​われます。

したがって、このフォームは、変数が設定されていない場合 (かつ) にのみテストされます。 null 以外)、展開全体 ${...} を置き換えます - の後の値 、この場合は null です .

したがって、${var-} になります:

<オール>
  • var に値がある (かつ null でない) 場合の var の値
  • var が null の場合の var の値 (コロン :がありません!):'' 、したがって:またヌル。
  • - の後の値 (この場合は null '' ) var が設定されていない場合。
  • すべては本当に:

    <オール>
  • '' に拡張 var が未設定または null の場合
  • var の値に展開します (var に値がある場合)。
  • したがって、展開は var の値について何も変更せず、展開も、シェルにオプション nounset がある場合に発生する可能性のあるエラーを回避するだけです

    このコードは $var の両方の使用で停止します :

    #!/bin/bash
    set -u
    
    unset var
    
    echo "variable $var"
    [[ $var ]] && echo "var set"
    

    ただし、このコードはエラーなしで実行されます:

    #!/bin/bash
    set -u
    
    unset var
    echo "variable ${var-}"
    [[ ${var-} ]] && echo "var set"
    

    Linux
    1. Uniq -uのポイントとそれは何をしますか?

    2. + aを設定しても-aフラグの設定が解除されませんか?

    3. Rackspaceはクラウドで何をしますか?

    1. マンページの Unix コマンド名の後に表示される括弧内の数字は何を意味しますか?

    2. brk() システムコールは何をしますか?

    3. コマンド ライン パラメータの - (ダッシュ) の魔法は何ですか?

    1. ここで999はどういう意味ですか?

    2. $(CC) と $CC の違いは何ですか?

    3. Linux でサフィックス .d は何を意味しますか?