トリッキーなライナーを分析し、便利なライナーをリストします。

トリッキーなライナーを分析し、便利なライナーをリストします。

以下のライニングを見て、正確な使い方と動作を分析するのに少し時間を費やしました。たとえば、設定されていない場合は、値を次の値に設定します。

export JDK_HOME=${JDK_HOME:-"/some/path/java-1.7"}

何かを検索すると、「:-」などのトリッキーなテキストは表示されません。文書化された便利な1行の便利なリストまたは参照する特定のマニュアルページがありますか?

ベストアンサー1

ドキュメント参照に対する他の素晴らしい答えに加えて、私はいつもBashのデバッグツールを使って何が起こっているのかを確認します。

次のようにブロックにラップして、目的のコマンドを有効または無効にできます。

$ set -x; command_to_watch; set +x

はい

$ set -x; export JDK_HOME=${JDK_HOME:-"/some/path/java-1.7"}; set +x
+ export JDK_HOME=/some/path/java-1.7
+ JDK_HOME=/some/path/java-1.7
+ set +x

ここで変数$JDK_HOMEがに設定されていることがわかります/some/path/java-1.7。ただし、別の値に設定すると、次のようになります。

$ export JDK_HOME=/a/path
$ echo $JDK_HOME
/a/path

このコマンドを再実行してください。

$ set -x; export JDK_HOME=${JDK_HOME:-"/some/path/java-1.7"}; set +x
+ export JDK_HOME=/a/path
+ JDK_HOME=/a/path
+ set +x

何もしないことがわかります。これは、変数がすでに設定されている場合、このコマンドはその変数を無視し、そうでない場合は値に設定することを示します/some/path/java-1.7

私たちの疑いを確認しましたバッシュのマニュアルページ:

${parameter:-word}
      Use Default Values.  If parameter is unset or null, the expansion of word
      is substituted.  Otherwise, the value of parameter is substituted.

おすすめ記事