どういう意味ですか! [[ -S $変数]]?

どういう意味ですか! [[ -S $変数]]?

わかりました…小さな基本的な質問ですが、「-S」が何をテストしているのかわかりませんか?

BORG_SOCKET="${BORG_SOCKET:-/run/borg.sock}"
if ! [[ -S $BORG_SOCKET ]]; then
  echo "err: borg socket does not exist" >&2
  exit 10
...

答え1

[[...]]シェル構造です。[[、および]]はシェル構文の予約語です。ここでは、シェルは次のマイクロ言語形式を理解しています。条件式

[この言語は、ユーティリティに渡された引数で構成される言語に似ていますが、いくつかの微妙な点で異なりますtest

シェルのマニュアルでその文書を見つけることができます。この[[...]]構成はもともとKornシェルから来ており、bashとzshによってコピーされましたが、2つの間に違いがあります。

については、bash以下を参照してください。条件付き構造以下により、システムにインストールされたバージョンの構成を取得できます。

info -n 'conditional constructs' bash

ここでは、[[...]]オペレータについて説明し、次のリンクを見つけることができます。Bash条件式内部理解のミッシュ言語を説明します。または、次の方法でノードに直接アクセスできます。

info -n 'Bash Conditional Expressions' bash

そこには次のものがあります。

-S文書

もし本当だ文書存在し、ソケットです。

する:

echo "err: borg socket does not exist" >&2

少し誤解を招く可能性がありますが、次のようにする必要があります。

echo "err: borg socket does not exist or is not a socket" >&2

厳密に言えば、次のようになります。

echo "err: borg socket does not exist or I can't determine whether it's a socket or not" >&2

答え2

からman test

-S FILE ファイルが存在し、ソケットです。

答え3

-S与えられたパスが存在し、ソケットかどうかをテストします。(リンクされたファイルtestですが、[[ -S演算子は同じ意味を持ちます。)上記は!テストのポイントを否定します。

関連情報