回答:
$-
「現在のフラグ」を意味します。echo $-
「himBH」を返します。これらはすべてデフォルトです。[[ $- != *i* ]] && return
実際にはコメントで上記のことを実行します。インタラクティブフラグが設定されているかどうかを確認します。[[および]]はブール値にするため、「true」または「false」になります。「false && return」はそれを続行させ、「true && return」はそれを実行させます。デフォルトフラグについて詳しく説明します。
hは「すべてをハッシュ」するためのものです。これは、PATHを照会することで見つけたコマンドの場所を記憶するようにbashに指示します。
私は「対話型」です:入力を入力して出力を取り戻します。
mは「モニター」用:ジョブ制御を有効にします
Bは「ブレース展開」です。これにより、ブレース拡張を使用できます
Hは「履歴展開」です。これにより、番号の前に感嘆符を付けてコマンドを履歴から再実行できます
ところで。私が持っています ...
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
基本的には同じですが、読みやすいと思います。
基本的には、「シェルフラグに小文字のiが含まれていない場合、ここで関数/スクリプトを停止する」ことを意味します。
[[ ]]
bashの条件式を示します
$-
シェルフラグを意味します。シェルが対話型の場合は、「i」が含まれます(つまり、スクリプトを実行するのではなく、コマンドを入力できます)
!=
単に「等しくない」という意味です。
*i*
「i」を含むすべてのものに一致するワイルドカードパターンです
return
引数なしは、現在の関数またはスクリプトの実行を停止することを意味します。
&&
論理AND演算子です。この場合return
、右側の式は、左側の式がtrueの場合にのみ評価(実行)されます。だから多くのプログラミング言語でa && b
は、if a then b
これは略記です-これは「短絡評価」と呼ばれ、それを使うとプログラミング教師を狂わせます:D
bashが対話型シェルで開かれていない場合は、何もしないでください。
機能全体はわかりませんが、TTYでbashを開いている場合に備えて、おそらくその行の下にコマンドとフラグが設定されています。
$-
あり*i*
、どのようにインタラクティブモードかどうかを知ることを楽しみにしています