Automator: Cambie al directorio seleccionado y ejecute el script de shell

1

Estoy intentando crear un comando de menú contextual a través del servicio Automator. El comando del menú contextual ejecutará un script de shell para crear algunos documentos predeterminados en el directorio dado.

Escribí el script de shell que se ejecuta correctamente cuando se ejecuta desde el directorio de destino:

#!/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

Luego abrí Automator y creé un nuevo servicio. Configuré el servicio para recibir la entrada seleccionada de folders en Finder .

Luego agregué lo siguiente a la parte superior de mi script de shell para recibir el directorio seleccionado como entrada estándar:

FolderPath=$1
$(cd $FolderPath)

La variable FolderPath definitivamente obtiene el directorio actual. Agregué un say $FolderPath a la secuencia de comandos shell y indica la ruta completa cuando se ejecuta desde el comando del menú contextual.

El problema es que cuando intento cambiar al directorio en la variable, no sucede nada. Puse otro comando say que pronunció el comando pwd después del cambio de directorio y dice que estoy en la raíz de mi usuario.

¿Hay algo que el automatizador hace de manera diferente cuando se trata de scripts de shell?

Aquí hay una captura de pantalla de todo el servicio.

Tambiéndebomencionarqueheintentadosimplementeconcatenarlarutadelacarpetayelnombredelarchivoqueintentécrearconelcomandotouchycuandolohagosolousaelnombredelacadenadelarchivoparacrear:

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

Cualquier ayuda sería muy apreciada!

    
pregunta Chris Schmitz 23.02.2014 - 16:59

1 respuesta

3

El problema aquí es que la entrada se pasa a stdin . No sé por qué ese es el valor predeterminado, pero debería poder simplemente cambiar el menú emergente en la parte superior derecha a "como argumentos". Hice eso y agregué cd "$1" a la parte superior del script y funcionó.

    
respondido por el 0942v8653 23.02.2014 - 17:32

Lea otras preguntas en las etiquetas