Linux
awk 列印 if 和 else 情況
我寫了以下命令:
lsblk -nl /dev/sdd -o MOUNTPOINT | awk '{if (NR!=1 && $1) { print 1; } else { print 0; }}'
它應該檢查給定設備的任何分區,在這種情況下/dev/sdd
,是否已安裝。但由於某種原因,腳本會同時列印 1 和 0?這有什麼意義?
如果有掛載點,我需要此命令評估為 true,否則評估為 false,以便在我的 shellscript 中使用它。
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 }'