我可以在那里看到一些grep / if / bash的东西,但是我在OS X上努力将它拉到一起。
基本上我想运行以下命令
diskutil info "/Volumes/Macintosh HD" | grep "Device Block Size"
如果系统块大小恢复为512字节,它会在系统上搜索Macintosh HD我希望它运行一个命令,如果它返回4096字节,我希望它运行不同的命令。
答案 0 :(得分:3)
这应该这样做
block_size=$(diskutil info "/Volumes/Macintosh HD" | grep "Device Block Size" | grep -Eo '[0-9]+')
if [[ "$block_size" = 512 ]]; then
echo 512
elif [[ "$block_size" = 4096 ]]; then
echo 4096
else
echo neither
fi
但是,我要指出,由于各种原因,这不是很便携:
/Volumes/Macintosh HD
我建议使用类似以下的内容:
tmp=$(mktemp /tmp/.diskutil_XXXXXX)
diskutil info -plist / >> "$tmp"
block_size=$(/usr/libexec/PlistBuddy -c 'Print :DeviceBlockSize' "$tmp")
rm "$tmp"
if [[ "$block_size" = 512 ]]; then
echo 512
elif [[ "$block_size" = 4096 ]]; then
echo 4096
else
echo neither
fi
答案 1 :(得分:2)
您可以使用awk提取大小,然后使用if / elseif条件:
size=$(diskutil info "/Volumes/Macintosh HD" | awk '/Device Block Size/{print $(NF-1)}')
if [[ $size -eq 512 ]]; then
echo "eecuting command for size = 512 ..."
elif [[ $size -eq 512 ]]; then
echo "eecuting command for size = 4096 ..."
fi