Estoy intentando crear un comando de menú contextual a través del servicio Automator. El comando del menú contextual ejecutará un shell script para crear algunos documentos por defecto en el directorio dado.
Escribí el shell script 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 que recibiera la entrada seleccionada de folders
en Finder
.
Entonces añadí lo siguiente en la parte superior de mi shell script para recibir el directorio seleccionado como entrada estándar:
FolderPath=$1
$(cd $FolderPath)
La variable FolderPath
obtiene definitivamente el directorio actual. He añadido un say $FolderPath
al shell script y dice toda la ruta cuando se ejecuta desde el comando del menú contextual.
El problema es que cuando intento cambiar al directorio de la variable, no pasa nada. Pongo otro say
que habló el comando pwd
después del cambio de directorio y dice que estoy en el Root de mi usuario.
¿Hay algo que Automator haga de manera diferente cuando se trata de shell scripts?
Aquí hay una captura de pantalla de todo el servicio.
También debo mencionar que he intentado simplemente concatenar la ruta de la carpeta y el nombre del archivo que he intentado crear con el touch
y cuando lo hago sólo utiliza el nombre de la cadena del archivo a crear:
say "$FilePath/History.markdown" # only says "History dot markdown"
Cualquier ayuda será muy apreciada.