2016-12-16 5 views
0

Hier ist ein Teil meines Linux Bash-Skripts. Ich muss einige Befehlszeilenargumente in die ausführbare Datei ./AAAAA eingeben, aber sie werden nicht angezeigt. Wenn ich sie mit <<end .. end einpacke, zeigt es mir einen "unerwarteten EOF" -Fehler an. Ich habe versucht, alle Eingabedateien um .. zu setzen - half auch nicht. Mir gehen die Ideen aus.Wie gebe ich Dateien in Linux ausführbare Datei ein?

while [ "$month" -le 9 ] 
do 
      while [ "$day" -le 31 ] 
      do 
          "AAAA_15-0$month-$day_text.ff" 
          xargs ./EXECUTABLE <<EOF 
          "AAAA_15-0$month-$day_text.ff" 
          "AAAA_15-0$month-$day_text" 
          "AAAA_15-0$month-$day_text.det" 
          ZZZ.txt 
          XXX.txt 
          CCC.txt 
          VVV.txt 
          BBB.txt 
          EOF 
          mv "AAAA_15-0$month-$day_text"*"."* "15-0$month-$day_text" 
          day=`expr $day + 1` 
      done 
      day=`expr $month + 1` 

+0

Wir wissen nicht wirklich, wie Ihre './AAAAA' ausführbare Datei funktioniert, also ist es schwer zu sagen. Hat es irgendwelche Unterlagen? Oder hast du seinen Quellcode? – nos

+0

Was Sie haben, ist in der Tat kein Argument, es ist Daten umgeleitet auf die 'stdin' (Standard-Eingabe-Stream). Also sollte Ihre ausführbare Datei es aus dem 'stdin' Stream lesen. –

Antwort

1

Gebrauch gemacht xargs:

xargs ./AAAA <<EOF 
XXXX.ff 
XXXX.det 
CCCC.txt 
BBBB.txt 
NNNN.txt 
MMMM.txt 
LLLL.txt 
EOF 
+0

Das Problem ist, dass sich meine Dateinamen ändern können, da sie sich in einem Zyklus befinden. Ich habe es einfach in meiner Frage vereinfacht. –

+0

Ihre Frage sollte genügend Informationen enthalten, um Ihr Problem zu verstehen. Kannst du es bearbeiten? – hek2mgl

+0

Mein schlechtes. Ich habe jetzt alles Script dort hingelegt. Die EOF-Lösung gibt mir * here-document in Zeile 20, abgegrenzt durch das Dateiende. * –

0

Wenn Sie <<EOF verwenden, muss die EOF am Anfang der Linie sein, es wird nicht gefunden, wenn er eingerückt ist.

while [ "$month" -le 9 ] 
do 
    while [ "$day" -le 31 ] 
    do 
     "AAAA_15-0$month-$day_text.ff" 
     xargs ./EXECUTABLE <<EOF 
     "AAAA_15-0$month-$day_text.ff" 
     "AAAA_15-0$month-$day_text" 
     "AAAA_15-0$month-$day_text.det" 
     ZZZ.txt 
     XXX.txt 
     CCC.txt 
     VVV.txt 
     BBB.txt 
EOF 
     mv "AAAA_15-0$month-$day_text"*"."* "15-0$month-$day_text" 
     day=`expr $day + 1` 
    done 
    day=`expr $month + 1` 
done 

Sie können stattdessen <<-EOF verwenden. Dies ermöglicht es eingerückt werden, aber die Einrückung mussTab Zeichen sein, nicht Leerzeichen.

Verwandte Themen