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?

fixer1234
  • 27,064
  • 61
  • 75
  • 116
Eamorr
  • 227
  • 3
  • 11
  • Your sure that `/bin/pwd` is correct? Does it work when invoked manually? – Bobby Sep 19 '12 at 12:39
  • 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 - Слава Україні Sep 19 '12 at 20:39

1 Answers1

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
  • 10,485
  • 1
  • 28
  • 44
  • Hi, thanks for the comment. I'm not sure it's bash... I tried `currentdir=$(/bin/pwd)`, but it returned `Illegal variable name` – Eamorr Sep 19 '12 at 12:00
  • 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 Sep 19 '12 at 12:04