シンボリックリンクが存在するかどうかを確認する方法 質問する

シンボリックリンクが存在するかどうかを確認する方法 質問する

bash にシンボリックリンクが存在するかどうかを確認しようとしています。試したことは次のとおりです。

mda=/usr/mda
if [ ! -L $mda ]; then
  echo "=> File doesn't exist"
fi


mda='/usr/mda'
if [ ! -L $mda ]; then
  echo "=> File doesn't exist"
fi

しかし、それは機能しません。 '!' が省略されている場合、トリガーされることはありません。 そして '!' がある場合は、毎回トリガーされます。

ベストアンサー1

-L「ファイル」が存在し、シンボリック リンクである場合は true を返します (リンクされたファイルは存在する場合も存在しない場合もあります)。必要なのは-f(ファイルが存在し、通常のファイルである場合は true を返す) か、または単に-e(ファイルが存在する場合はタイプに関係なく true を返す) です。

によるGNU マニュアルページ-hと同一である-Lが、BSD マニュアルページ、使用しないでください:

-h fileファイルが存在し、シンボリック リンクである場合は True になります。この演算子は、このプログラムの以前のバージョンとの互換性のために保持されています。その存在に依存しないでください。代わりに -L を使用してください。

おすすめ記事