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

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

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

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.

答え2

Readをman bash押してから入力します/Parameter Expansion(正確にはこのように前にスラッシュが付けられます)。このマニュアルページで関連セクションを検索します。可能な拡張修飾子がそこに記述されています。

答え3

私は見つけた付録Bの参照カード~の高度なバッシュスクリプトガイドとても便利です。あなたの例の関連テーブルは次のとおりです。表B-4:パラメータの置き換えと拡張

関連情報