
すでに記述されたシェル スクリプトを理解しようとしているときに、次の行に遭遇しました。
while [ -h "$SOURCE" ];
私が知りたいのは、-h
追加情報については:
$SOURCE = ./my-script.sh
答え1
は、キーワード-h
のオプションではなく、 (および) ユーティリティwhile
のオプションです。 オプションの意味は、シェルの 、または (これらは通常、組み込みユーティリティであるため) のマニュアルに記載されています。を参照してください。[
test
test
[
man test
それは標準test
およびのオプション[
、およびPOSIX標準それを説明するそのようです:
-h pathname
pathname
シンボリック リンクの既存のディレクトリ エントリに解決される場合は True です。pathname
解決できない場合、またはpathname
シンボリック リンクではないファイルの既存のディレクトリ エントリに解決される場合は False です。 の最後のコンポーネントがシンボリック リンクである場合pathname
、そのシンボリック リンクはたどられません。
つまり、それは次のように評価される。真実指定されたパス名がシンボリック リンクである場合、while
変数の値がSOURCE
シンボリック リンクを参照しなくなるまでループが実行されます。