Argument übergeben .sh-Skripte
Habe ich ein shell-Skript foo.sh
was ist ein qsub job mit Inhalt:
#!/bin/bash -l
#$ -S /bin/bash
#$ -N $2
echo $1
Möchte ich zwei Argumente. Wenn ich den Anruf qsub foo.sh a b das erste argument wird richtig bearbeitet und hallte in der Befehlszeile als 'eine'. Allerdings weiß ich nicht wie ich die übergabe eines Arguments im zweiten Fall beginnend mit '#$ -N". In diesem Fall $2 nicht ausgewertet 'b' aber eigentlich '$2' eingestellt ist. Hilfe wäre sehr geschätzt werden.
Ich glaube, Sie brauchen, um zu erklären, was du damit meinst
Ich habe bereits versucht, es zu erklären, siehe Kommentar zu Saptamus Prime. Diese option wird verwendet, um den job-Namen in einem cluster-Umfeld, z.B. unter: clusterresources.com/torquedocs/commands/qsub.shtml. Stimmt, normalerweise # wird für Kommentare verwendet. Aber nicht, wenn gefolgt, wenn in der syntax #$ -Argument Wert. Danke.
Wenn die Frage betrifft shell metasyntax spezifischen qsub, Sie sollte erwähnt haben, dass in der Frage. Eh, der link, den du geschickt Gespräche über eine
Auch die Verwendung von
Danke, Celada. Ich wusste nicht, dass dieses Verhalten ist spezifisch für qsub. Ich denke, ich weiß nicht, sh-Verhalten gut genug. Wenn ich passieren eine static string funktioniert es. Also sagen Sie angesichts des Verhaltens von qsub ich kann mich nicht übergeben, parameter an das Skript foo.sh aber ich habe zu hart-code die argument-Namen für qsub als statische strings?
#$ -N $2
. Wenn Ihr Skript ist ein bourne-shell-Skript, dann ist dies ein Kommentar ist (es beginnt mit #
), aber Sie scheinen zu bedeuten, es als etwas anderes.Ich habe bereits versucht, es zu erklären, siehe Kommentar zu Saptamus Prime. Diese option wird verwendet, um den job-Namen in einem cluster-Umfeld, z.B. unter: clusterresources.com/torquedocs/commands/qsub.shtml. Stimmt, normalerweise # wird für Kommentare verwendet. Aber nicht, wenn gefolgt, wenn in der syntax #$ -Argument Wert. Danke.
Wenn die Frage betrifft shell metasyntax spezifischen qsub, Sie sollte erwähnt haben, dass in der Frage. Eh, der link, den du geschickt Gespräche über eine
#PBS
Richtlinie, aber es erwähnt nicht, dass #$
an alle, also ich weiß noch nicht, was das bedeutet. In jedem Fall klingt es wie die qsub
Richtlinien interpretiert werden qsub
selbst vor das script ausgeführt wird, also würde es Sinn machen, dass die Argumente, die an das Skript übergeben, sobald es ausgeführt wird nicht in die Verarbeitung solcher Richtlinien. Ich denke, man sollte liefern eine statische Zeichenfolge für den Namen des job.Auch die Verwendung von
-l
in der shebang-Zeile des Skripts ist verdächtig. -l
Kräfte eine login-shell, die normalerweise aufrufen /etc/profile
Funktionalität für interaktive shells. Kein shell-script brauchen sollte.Danke, Celada. Ich wusste nicht, dass dieses Verhalten ist spezifisch für qsub. Ich denke, ich weiß nicht, sh-Verhalten gut genug. Wenn ich passieren eine static string funktioniert es. Also sagen Sie angesichts des Verhaltens von qsub ich kann mich nicht übergeben, parameter an das Skript foo.sh aber ich habe zu hart-code die argument-Namen für qsub als statische strings?
InformationsquelleAutor user1137731 | 2012-01-08
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, Sie können nicht. Das # - Zeichen am Anfang der Zeile macht es so, dass die $2 nicht ersetzt werden durch das argument an das Skript. Der Weg, das zu tun, was Sie zu tun versuchen ist
InformationsquelleAutor dbeer
Funktioniert fune für mich.
Ich weiß nicht, was die -N Befehl bedeutet, aber
beim Aufruf von
sh foo.sh a b
umgehend EchosInformationsquelleAutor Saptamus Prime