私は、マウントポイントが特定のディレクトリがマウントポイントであることを確認するために使用されることを理解しています。しかし、私が理解していないのはif文との組み合わせです。
私はインターネット上でコードスニペットをテストしました。
#!/bin/bash
if mountpoint -q $1; then
echo "$1 is mounted"
else
echo "$1 isn't mounted"
fi
効果がある!しかし、それがどのように機能するのかよくわかりません(特に-qは静かに保つという意味です)。条件を角かっこ内に入れてみました。
if [[ mountpoint -q $1 ]]; then ...
しかし、これはうまくいきません。だから私はこのifステートメントが機能するようにする内部メカニズムが何であるかを尋ねたいと思います。
答え1
コマンドはmountpoint
状態で終了しますディレクトリまたはファイルがマウントポイントの場合は0、それ以外の場合は0ではありません。
これがif
まさにコマンドが確認するものです。コマンドが正常に終了したか(ゼロ状態)か失敗したか(ゼロ以外の状態)か(出力かどうかにかかわらず)
最後の部分を説明すると、[[ ... ]]
構文は文字列があるかどうかを確認しますが、この場合は次のように出力をキャプチャする必要があります[[ $(mountpoint $1) ]]
。ただし、コマンドがそのコマンドからのみ出力を印刷する場合にのみ有効です。場合には、このようなものがより現実的になります[[ $(mountpoint $1 | grep 'is a mountpoint') ]]
。でもこれは劣等だ…ただ直接書いてみて-q
終了状態を確認すればいいのだ!