我正在为一些Macintosh客户端编写本地登录脚本。我想在尝试再次安装它们之前卸载机器上的许多驱动器,类似于我在Windows客户端上执行的操作。下面列出的是我的代码;但是,如果有一种方法可以优化它或压缩代码,我很好奇吗?
if [ -d "/Volumes/Share1" ]; then
umount -f /Volumes/Share1
fi
if [ -d "/Volumes/Share2" ]; then
umount -f /Volumes/Share2
fi
if [ -d "/Volumes/Share3" ]; then
umount -f /Volumes/Share3
fi
这看起来很笨重,而且我不知道怎么做得更好。
答案 0 :(得分:2)
for for循环?
for dir in /Volumes/Share[123]; do
if [ -d "$dir" ] ; then
umount -f $dir
fi
done
在现实生活中,你不太可能想要处理Share[123]
,所以我希望你想把实际的清单放在那里,比如
for dir in "/Volumes/My Share" "/Volumes/pr0n" "/Volumes/warez"; do
等
答案 1 :(得分:2)
也许像
VOLUMES="/Volumes/Share1 /Volumes/Share2 /Volumes/Share3"
for volume in $VOLUMES ; do
[ -d $volume ] && umount -f $volume
done
(您需要对此进行一些修改以处理其中包含空格的名称)
答案 2 :(得分:0)
您始终可以使用功能来减少重复:
unmount_if_necessary() {
[ -d "$1" ] && umount -f "$1"
}
unmount_if_necessary /Volumes/Share1
unmount_if_necessary /Volumes/Share2
#...