MacOS bash-file if-then不起作用

时间:2016-07-06 12:10:39

标签: bash macos

他们, 目前我正在为工作写一个newbie-bash文件。唯一的目的是通过一键显示/隐藏隐藏文件。我的最后一个剧本很久以前,我在这里研究了正确的解决方案并制作了这个剧本:

#!/bin/bash
 if defaults write com.apple.finder AppleShowAllFiles 0
then 
 defaults write com.apple.finder AppleShowAllFiles 1
else
 defaults write com.apple.finder AppleShowAllFiles 0
fi

在此之后无法正常工作我尝试了

#!/bin/bash
 if defaults write com.apple.finder AppleShowAllFiles 0
then 
 defaults write com.apple.finder AppleShowAllFiles 1
elif defaults write com.apple.finder AppleShowAllFiles 1
then
 defaults write com.apple.finder AppleShowAllFiles 0
fi

嗯 - 两者都有部分工作。因此,如果第一个参数为真(AppleShowAllFiles 0),它会将值设置为1.但它不能反过来:Else-condition不会做任何事情。如果AppleShowallFiles 0为false(意味着AppleShowAllFiles 1),它就不会做任何事情。 为什么会这样,我做错了什么以及如何解决?

我非常感谢任何有用的答案,非常感谢!

1 个答案:

答案 0 :(得分:1)

您没有获取AppleShowAllFiles的当前值;您将其值设置为0,当成功时,将其设置为1.使用

if [[ $(defaults read com.apple.finder AppleShowAllFiles) = 0 ]]; then
    defaults write com.apple.finder AppleShowAllFiles 1
else
    defaults write com.apple.finder AppleShowAllFiles 0
fi