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écrearconelcomandotouch
ycuandolohagosolousaelnombredelacadenadelarchivoparacrear:
say"$FilePath/History.markdown" # only says "History dot markdown"
Cualquier ayuda sería muy apreciada!