web-dev-qa-db-ja.com

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

.bashrcにこの行があり、これが正確に何を意味するのか知りたい

# If not running interactively, don't do anything
[[ $- != *i* ]] && return
22
Severus Tux
  • $-は「現在のフラグ」を意味します。
  • echo $-は「himBH」を返します。これらはすべてデフォルトです。
  • so ... [[ $- != *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

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

33
Rinzwind

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

[[ ]]

bashの条件式を示します

$-

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

!=

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

*i*

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

return

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

&&

論理的なおよび演算子です。右側の式(この場合はreturn)は、左側の式がtrueの場合にのみ評価(実行)されます。そのため、多くのプログラミング言語では、a && bif a then bの短縮形です。これは「短絡評価」と呼ばれ、プログラミング教師を使用すると夢中になります:D

6
delt

インタラクティブシェルでbashが開いていない場合は、何もしないでください。

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

2
TheWanderer