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 を使用してください。