J'écris un script bash pour automatiser notre processus de construction. J'ai besoin de stocker un chemin dans un fichier plist de paramètres et de le récupérer dans un script shell, en utilisant plistbuddy.
La clé indique below le chemin où les archives sont stockées, un dossier sur le bureau:
<?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>
Dans mon script shell-je accéder à la clé:
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"
Le ARCHIVES
var est pas expansion à /Users/*username*/Desktop/Archives/
, comme je m'y attends.
j'ai fait un test en créant un var avec la même chaîne:
ARCHIVES="$HOME/Desktop/Archives/"
echo "$ARCHIVES"
#expands to "/Users/*username*/Desktop/Archives/"
mkdir "$ARCHIVES/test/"
#creates the 'test' directory
Comme ce script sera exécuté sous un compte d'utilisateur inconnu comment puis-je forcer le répertoire $ HOME pour développer correctement.
Essayez 'mkdir' avec option' -p'. – Cyrus
@Cyrus 'mkdir -p $ ARCHIVES' crée un dossier nommé' $ HOME' sur le bureau, contenant les dossiers 'Desktop/Archives/test /'. – demosp