「[[$-!= * i *]] && return」はどういう意味ですか?


22

私はこの行を持っていますが、これが.bashrc正確に何を意味するのか知りたいです

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

回答:


33
  • $- 「現在のフラグ」を意味します。
  • 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

基本的には同じですが、読みやすいと思います。


6

基本的には、「シェルフラグに小文字のiが含まれていない場合、ここで関数/スクリプトを停止する」ことを意味します。

[[ ]]

bashの条件式を示します

$-

シェルフラグを意味します。シェルが対話型の場合は、「i」が含まれます(つまり、スクリプトを実行するのではなく、コマンドを入力できます)

!=

単に「等しくない」という意味です。

*i*

「i」を含むすべてのものに一致するワイルドカードパターンです

return

引数なしは、現在の関数またはスクリプトの実行を停止することを意味します。

&&

論理AND演算子です。この場合return、右側の式は、左側の式がtrueの場合にのみ評価(実行)されます。だから多くのプログラミング言語でa && bは、if a then bこれは略記です-これは「短絡評価」と呼ばれ、それを使うとプログラミング教師を狂わせます:D


2

bashが対話型シェルで開かれていない場合は、何もしないでください。

機能全体はわかりませんが、TTYでbashを開いている場合に備えて、おそらくその行の下にコマンドとフラグが設定されています。


おかげで:)しかし、私は正確に何で$-あり*i*、どのようにインタラクティブモードかどうかを知ることを楽しみにしています
セブルス・タックス

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.