我准备了一个小 bash 脚本来切换隐藏的 OS X 文件的可见性。
if (defaults write com.apple.finder AppleShowAllFiles FALSE); then
defaults write com.apple.finder AppleShowAllFiles TRUE
elif (defaults write com.apple.finder AppleShowAllFiles TRUE); then
defaults write com.apple.finder AppleShowAllFiles FALSE
fi
killall Finder
当隐藏文件不可见时,脚本成功地使它们可见,但之后,当我重新运行脚本以使隐藏文件再次不可见时,它会失败并且不执行任何操作。
我哪里错了?
答案1
在这种if
情况下,您应该使用该defaults read
命令,而不是write
.否则,结果始终为真,当然elif
永远不会运行。
另外,这不是if
条件的语法。你应该使用:
if [ $(command) == "TRUE" ]; then
但在这种情况下,也许这样的事情会不那么冗长:
STATUS=$(defaults read com.apple.finder AppleShowAllFiles)
case "$STATUS" in
"TRUE") OPTION="FALSE" ;;
"FALSE") OPTION="TRUE" ;;
esac
defaults write com.apple.finder AppleShowAllFiles $OPTION
killall Finder