次のコマンドを作成しました。lsblk -nl /dev/sdd -o MOUNTPOINT | awk '{if (NR!=1 && $1) { print 1; } else { print 0; }}'
特定のデバイス(この場合)のパーティションがマウントされていることを/dev/sdd
確認する必要があります。
しかし、何らかの理由でスクリプトは1と0の両方を印刷しますか?ポイントは何ですか?
マウントポイントが存在する場合はtrueと評価し、それ以外の場合はシェルスクリプトで使用するにはfalseと評価するにはこのコマンドが必要です。
答え1
awk
各入力ラインでコードをループとして実行します。空でない行ごとにa1
またはaを取得します。0
あなたはできます
デバイスにマウントされたパーティションがあることを確認するには、次の方法を使用することをお勧めします。
device=/dev/mmcblk0
if [ -n "$(lsblk -nl -o MOUNTPOINT "$device")" ]
then
echo "Partitions are mounted on $device"
else
echo "Device $device is currently unused"
fi
本当にこのアプローチを維持したい場合は、awk
これがあなたが探しているものかもしれません。 (なぜ最初の行を無視したかったのかわかりません。私のテストでは、デバイス全体を指しているように見え、デバイス自体にファイルシステムが含まれている可能性があるため、スキップテストを削除しました。)
device=/dev/sdd
lsblk -nl "$device" -o MOUNTPOINT | awk 'NF { found=1 } END { print found+0 }'