Error de "variable no definida" en el script de shell en Sun Grid Engine


1

Tengo el siguiente script de envío de Sun Grid Engine:

#!/bin/sh
# sun grid engine cluster

# use current working directory
#$ -cwd

# merge error output into standard output stream
#$ -j yes
#$ -o generate_databases.log

# request to  cpu number
#$ -pe make 4

currentdir=`/bin/pwd`
echo "current working directory: $currentdir"

Y aquí está mi salida.

/home/eamorr/sge
currentdir: Undefined variable.

Como puede ver, la variable 'currentdir' devuelve undefined.

¿Cómo arreglar esto?


Estás seguro de que /bin/pwd ¿es correcto? ¿Funciona cuando se invoca manualmente?
Bobby

El hecho de que el script genere el directorio actual ( /home/eamorr/sge ) sugiere que está encontrando pwd. Y, incluso si no, no debería causar este error; foo=`/no/such/command` Todavía debe asignar una cadena nula a foo o abortar el guión.
Scott

Respuestas:


1

¿Estás seguro de que es bash? El operador backtick no es portátil. Hay varias maneras de (posiblemente) arreglar esto:

  1. utilizar #!/bin/bash En la primera línea para hacer esto no es bash nada más
  2. evitar los backticks: currentdir=$(pwd) o currentdir=$(/bin/pwd)
  3. o incluso más simple currentdir=$PWD

Hola, gracias por el comentario. No estoy seguro de que sea bash ... lo intenté currentdir=$(/bin/pwd), pero volvió Illegal variable name
Eamorr

Así que lo más probable es que no sea bash. Pruebe la opción (1) entonces, pero en realidad, probablemente use una shell de SUN patentada que se comporta de manera completamente diferente a otras shells conocidas.
Stefan Seidel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.