Sto provando a creare un comando del menu di scelta rapida tramite il servizio Automator. Il comando del menu di scelta rapida eseguirà uno script di shell per creare alcuni documenti predefiniti nella directory specificata.
Ho scritto lo script della shell che viene eseguito correttamente quando viene eseguito dalla directory di destinazione:
#!/bin/bash
touch History.markdown
touch Notes.markdown
touch Plan.markdown
touch ProjectName.tmproj
cat <<TEXT > ProjectName.tmproj
<?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>currentDocument</key>
<string>Notes.markdown</string>
<key>documents</key>
<array>
<dict>
<key>filename</key>
<string>Notes.markdown</string>
<key>selected</key>
<true/>
</dict>
<dict>
<key>filename</key>
<string>History.markdown</string>
</dict>
<dict>
<key>filename</key>
<string>Plan.markdown</string>
</dict>
</array>
<key>openDocuments</key>
<array>
<string>History.markdown</string>
<string>Notes.markdown</string>
<string>Plan.markdown</string>
</array>
<key>fileHierarchyDrawerWidth</key>
<integer>200</integer>
<key>metaData</key>
<dict/>
<key>showFileHierarchyDrawer</key>
<true/>
<key>windowFrame</key>
<string>{{113, 95}, {1230, 900}}</string>
</dict>
</plist>
TEXT
Ho quindi aperto Automator e creato un nuovo servizio. Ho impostato il servizio per ricevere l'input selezionato di folders
in Finder
.
Ho quindi aggiunto quanto segue all'inizio del mio script di shell per ricevere la directory selezionata come input standard:
FolderPath=$1
$(cd $FolderPath)
La variabile FolderPath
ottiene definitivamente la directory corrente. Ho aggiunto un say $FolderPath
allo script della shell e dice l'intero percorso quando viene eseguito dal comando del menu contestuale.
Il problema è che quando provo a passare alla directory nella variabile, non succede nulla. Ho inserito un altro comando say
che ha pronunciato il comando pwd
dopo la modifica della directory e dice che sono alla radice dell'utente.
C'è qualcosa che l'automazione fa in modo diverso quando si tratta di script di shell?
Ecco una schermata di tutto il servizio.
Devoanchedirechehocercatodiconcatenaresemplicementeilpercorsodellacartellaeilnomedelfilechehoprovatoacreareconilcomandotouch
equandolofacciousasoloilnomedellastringadelfilepercreare:
say"$FilePath/History.markdown" # only says "History dot markdown"
Qualsiasi aiuto sarebbe molto apprezzato!