Hay muchas preguntas similares, pero no puedo encontrar un ejemplo de lo que estoy buscando, ni en las guías de scripting de Bash (estoy seguro de que está ahí, pero es un libro grande...)
Lo que quiero es esto:
Tengo un archivo al que llamo: ./runMe.sh, cuyo contenido es este:
callMaxima() {
maxima -b "$1"
}
callSINGULAR() {
/opt/local/bin/Singular -b "$2"
}
callMaxima $1;
callSINGULAR $2;
Quiero que Maxima haga algunas cosas, dictadas por el primer argumento pasado en la terminal, por ejemplo, ./runMe MaximaFile SINGULARFile, y que generará un archivo de texto, Maxima.OUT.
Luego quiero, después de escribir el archivo anterior (Maxima.OUT), iniciar SINGULAR en modo por lotes (también), con el archivo pasado por el segundo argumento, por ejemplo, SINGULARFile. Leerá datos de Maxima.OUT y hará algunas cosas.
El problema:
El script ejecuta Maxima correctamente, escribe el archivo, sale y entra en SINGULAR. Pero aparentemente el argumento del archivo, por ejemplo, SINGULARFile, no se abre. Puedo iniciar SINGULAR fácilmente desde la terminal y ejecutar/abrir automáticamente el archivo con
/opt/local/bin/SINGULAR -b SINGULARFile
pero no funciona en runMe.sh. Dado que los programas parecen muy similares, supongo que mi runMe.sh no funciona correctamente...
Respuesta1
Esta función debería verse así:
callSINGULAR() {
/opt/local/bin/Singular -b "$1"
}
Debido a que el parámetro es el primero, se proporciona para funcionar.