1. ホーム
  2. バッシュ

[解決済み】シンボリックリンクが存在するかどうかを確認する方法

2022-04-02 11:11:58

質問

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

しかし、これではうまくいきません。 もし'!'が抜けていたら、決してトリガーされません。また、'!'がある場合は、毎回トリガーされます。

解決方法は?

-L は、"file" が存在し、シンボリックリンクであれば真を返します(リンク先のファイルは存在してもしなくてもかまいません)。あなたは -f (ファイルが存在し、通常のファイルである場合に真を返す)または、単に -e (タイプに関係なくファイルが存在すれば真を返す)。

によると GNU マニュアルページ , -h とは同一です。 -L によると、しかし BSDマンページ 使用しないでください。

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