Automator: passa alla directory selezionata ed esegue lo script della shell

1

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.

Devoanchedirechehocercatodiconcatenaresemplicementeilpercorsodellacartellaeilnomedelfilechehoprovatoacreareconilcomandotouchequandolofacciousasoloilnomedellastringadelfilepercreare:

say"$FilePath/History.markdown" # only says "History dot markdown"

Qualsiasi aiuto sarebbe molto apprezzato!

    
posta Chris Schmitz 23.02.2014 - 16:59
fonte

1 risposta

3

Il problema qui è che l'input è passato a stdin . Non so perché è l'impostazione predefinita, ma dovresti essere in grado di cambiare semplicemente il menu popup in alto a destra su "come argomenti". L'ho fatto e ho aggiunto cd "$1" all'inizio dello script e ha funzionato.

    
risposta data 23.02.2014 - 17:32
fonte

Leggi altre domande sui tag