【发布时间】:2017-02-22 20:03:22
【问题描述】:
我正在编写一个 bash 脚本来自动化我们的构建过程。我需要将路径存储在设置 plist 文件中,并使用 plistbuddy 在 shell 脚本中检索它。
下面的键指定存档的存储路径,桌面上的一个文件夹:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>archives_path</key>
<string>$HOME/Desktop/Archives/</string>
</dict>
</plist>
在我的 shell 脚本中,我访问了密钥:
SETTINGS_PATH="path/to/plist/file"
ARCHIVES=$(/usr/libexec/PlistBuddy -c "Print archives_path" "$SETTINGS_PATH")
#outputs "$HOME/Desktop/Archives/"
mkdir "$ARCHIVES/test/"
#outputs "mkdir: $HOME/Desktop/Archives: No such file or directory"
ARCHIVES 变量没有像我预期的那样扩展到 /Users/*username*/Desktop/Archives/。
我通过创建一个具有相同字符串的 var 进行了测试:
ARCHIVES="$HOME/Desktop/Archives/"
echo "$ARCHIVES"
#expands to "/Users/*username*/Desktop/Archives/"
mkdir "$ARCHIVES/test/"
#creates the 'test' directory
由于此脚本将在未知用户帐户下运行,我如何强制 $HOME 正确展开。
【问题讨论】:
-
试试
mkdir选项-p。 -
@Cyrus
mkdir -p $ARCHIVES在桌面上创建一个名为$HOME的文件夹,其中包含文件夹Desktop/Archives/test/。
标签: bash macos shell plist plistbuddy