これがシンボリックリンクに/proc/ディレクトリがあるかどうかをテストする正しい方法ですか?

これがシンボリックリンクに/proc/ディレクトリがあるかどうかをテストする正しい方法ですか?

/etc/mtab シンボリックリンクが指しているかどうかをテストする必要があります。 POSIX規格に準拠する必要があります。 (通常はRHEL 5からRHEL 7まで実行する必要があります。)現在私が持っているものは次のとおりです。/proc/something

#!/bin/bash
if [ $(readlink -f /etc/mtab | grep '\/proc\/') ]; then
    echo do something related to proc
else
    echo do something other than proc
fi

いくつかの極端なケースを見逃しましたか?

ベストアンサー1

  1. シンボリックリンクなら/etc/mtabどうでしょうか/home/mikasa/proc/something?おそらく^grep正規表現にaを追加する必要があります。
  2. 言い換えれば、/正規表現には特殊文字がないので、エスケープする必要はありません。
  3. そうしない妥当な理由がなく、自分が何をしているのかを知らない限り、シェル変数参照を引用する必要があります。これには$(…)コマンド置換が含まれます。/etc/mtab シンボリックリンクがあり、/proc/foo = barコマンドが次に拡張される非常に深刻な状況の場合
    if [ /proc/foo = 列 ]
    もちろん、偽と評価されます。二重引用符で囲むことで$(…)この問題を解決できます。
    もし[$(readlink -f /etc/mtab | grep '^/proc/')];その後
  4. testただし、コマンドの置き換えや(別名[...)を実行する必要はありません]。  grep検索を指示したパターンが見つかったかどうかを示す終了ステータスを提供するため、次のようにコマンドを単純化できるはずです。
    readlink -f /etc/mtab | grep '^/proc/' > /dev/null;

おすすめ記事