
Ich habe das folgende Übermittlungsskript für die 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"
Und hier ist meine Ausgabe
/home/eamorr/sge
currentdir: Undefined variable.
Wie Sie sehen, gibt die Variable „currentdir“ „undefined“ zurück.
Wie kann ich das beheben?
Antwort1
Sind Sie sicher, dass es Bash ist? Der Backtick-Operator ist nicht portierbar. Es gibt mehrere Möglichkeiten, dies (möglicherweise) zu beheben:
- Verwenden Sie
#!/bin/bash
in der ersten Zeile, um sicherzustellen, dass es sich um Bash handelt und nicht um etwas anderes - Vermeiden Sie die Backticks:
currentdir=$(pwd)
odercurrentdir=$(/bin/pwd)
- oder noch einfacher
currentdir=$PWD