0

我正在编写一个 shell 脚本来切换 Mac OSX Mountain Lion 上隐藏文件的显示。但是在四处搜索之后,我找不到答案:是否可以将条件表达式的布尔值直接使用?例如在 java 中,我会完成print(1 == 0)并得到结果false。如果可能,怎么做?

请注意,我不是在要求我只能在 Google 上找到的“if-else”方法。以下是我到目前为止编写的当前脚本,第 2 行有问题。

#!/bin/sh
defaults write com.apple.Finder AppleShowAllFiles [$(defaults read com.apple.Finder AppleShowAllFiles) = 0]
killall Finder && open /System/Library/CoreServices/Finder.app
4

2 回答 2

0

不,不可能直接。

你可以做一些愚蠢的事情

#!/bin/sh
defaults write com.apple.Finder AppleShowAllFiles $(defaults read com.apple.Finder AppleShowAllFiles | grep -q 0 && echo true || echo false)
killall Finder && open /System/Library/CoreServices/Finder.app

但最好只使用 if..then 或开关:

#!/bin/sh
case "$(defaults read com.apple.Finder AppleShowAllFiles)" in
  1) val=true ;;
  *) val=false ;;
esac
defaults write com.apple.Finder AppleShowAllFiles $val
killall Finder && open /System/Library/CoreServices/Finder.app
于 2013-10-10T09:44:31.393 回答
0

在我发现“expr”命令后,我刚刚找到了问题的解决方案。这实际上是可能的。 expr $(commandToCheck) = $(valueToCheckAgainst)如果为真,将返回标准输出 1,如果为假,则返回 0。

我已将代码更新为以下内容:

defaults write com.apple.Finder AppleShowAllFiles $(expr $(defaults read com.apple.Finder AppleShowAllFiles) = 0)
于 2013-10-10T18:35:15.913 回答