最近、私は私のスクリプトの特定の行の後ろにあるシェル構文とロジックを増やすことを試みてきました。[[expression]]
行の実行に何の価値ももたらさない例の目的は何ですか?したがって、スキップできますか?後ろの実際の式のみが使用されます[[]]
。
export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"
私の仮定は、これがいくつかの値が欠落している場合(ヌルポインタ例外)、ある種のチェックだと思いますが、演算子は"[[]]"
そのようなことをしないと思いますか?このスクリプトの目的は簡単です。 =>sdk
端末でグローバルに使用できるようにエクスポートすることです。
答え1
答え2
私のローカルコンピュータでは、(そして経験として)「[」はbashの/usr/bin/testの別名です。確かに[[
そうです。いいえ/usr/bin/test/usr/bin/test
(間にスペースがないため)に拡張されます。 Bash(およびおそらく他のシェル)では、角括弧は/usr/bin/testを呼び出すのではなく、シェルの内部式評価器を使用する予約語です。
$HOME/.sdkman/bin/sdkman-init.sh
変数を設定した後、ファイルの長さがゼロでない場合、ここにあるコードは現在のシェルで実行されます。私はこれの目的が何であるかわかりません(長さ0のファイルは実際には何もしないからです)。