我正在编写一个 bash 脚本,在 OS X 上进行测试,但它最终会在标准 Linux 环境中运行,并且会遇到奇怪的错误。
我的脚本中有这样的测试:
if [ ! -w $BP ]; then
echo "'$1' not writable"
exit 1
fi
对我来说这似乎非常合理并且在 Linux 下运行良好但是当尝试在 OS XI 上测试时出现以下错误消息:
startSvr.sh:第 135 行:[:缺少 `]' startSvr.sh:第 135 行:-w:未找到命令
那么这是因为 OS X 不支持-w
测试吗?还是有其他原因导致它对我来说不起作用?例如环境
答案1
文件名后面可能没有空格吗?也就是说,该行实际上是
if [ ! -w $BP]; then
因为这会产生您看到的错误。
在 OP 指出目录名称可以包含空格后进行了更新
建议将代码更改为
if [ ! -w "$BP" ]; then