Kann dies nicht unser oder erstellen Sie ein Beispiel, das dies reproduzieren kann.cygwin bash forward slash in umgekehrten Schrägstrich konvertiert
Am mit einer externen sh-Datei versucht, der hadoop sh Datei
myfile.sh
# workingdir = /data1/some/path/lib
WORKINGDIR=`cygpath -p -w -m "$WORKINGDIR"`
# so the above in windows land is C:/some/path/lib
# HADOOPCMD essentially is a call to hadoop.sh
$HADOOPCMD jar $WORKINGDIR/myjar.jar
hadoop.sh
echo "[email protected]" // still C:/some/path/lib
exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "[email protected]"
jedoch, wenn "$ @" in aufzurufen erweitert wird cygwin der resultierende Pfad wird C: \ some \ path \ lib und dann die hadoop.sh Beschwerden, dass es das jar nicht finden kann ... Keine gültige JAR: C: \ some \ Pfad \ lib
Allerdings, wenn ich den Pfad in myfile.sh fest codieren würde; es funktioniert
$HADOOPCMD jar C:/some/path/lib/myjar.jar
Frage
- warum die "$ @" der Befehl exec das/ändern in der WORKINGDIR Variable \?
- Warum funktioniert der hardcoded Pfad?
- Wie man dies mit variabler Substitution zur Arbeit bringt?
hmm .. Ich glaube, ich wurde es unter Angabe der $ WORKINGDIR zu arbeiten, damit der Befehl $ HADOOPCMD jar „$ WORKINGDIR“ ist /myjar.jar – sunny
Allgemeine Faustregel "Zitiere immer deine variablen Erweiterungen". –