"Undefined variable" error in shell script on Sun Grid Engine

1

I have the following Sun Grid Engine submission script:

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

And here is my output

/home/eamorr/sge
currentdir: Undefined variable.

As you can see, the 'currentdir' variable returns undefined.

How to fix this?

Eamorr

Posted 2012-09-19T11:47:19.040

Reputation: 227

Your sure that /bin/pwd is correct? Does it work when invoked manually? – Bobby – 2012-09-19T12:39:35.207

The fact that the script output the current directory (/home/eamorr/sge) suggests that it is finding pwd. And, even if not, it shouldn't cause this error; foo=\/no/such/command`` should still either assign a null string to foo or abort the script. – Scott – 2012-09-19T20:39:27.077

Answers

1

Are you sure it's bash? The backtick operator is not portable. There are several ways to (possibly) fix this:

  1. use #!/bin/bash in the first line to make dure it's bash not anything else
  2. avoid the backticks: currentdir=$(pwd) or currentdir=$(/bin/pwd)
  3. or even simpler currentdir=$PWD

Stefan Seidel

Posted 2012-09-19T11:47:19.040

Reputation: 8 812

Hi, thanks for the comment. I'm not sure it's bash... I tried currentdir=$(/bin/pwd), but it returned Illegal variable name – Eamorr – 2012-09-19T12:00:25.300

So it's most likely not bash. Try option (1) then, but actually, it probably uses a proprietary SUN shell which just behaves completely different from other known shells. – Stefan Seidel – 2012-09-19T12:04:53.577