Ich schreibe ein Skript, um eine ausführbare Datei (Arm ausführbare Datei) in Linux zu generieren, indem Sie eine benutzerdefinierte .s-Datei aufnehmen. Also gibt der Benutzer eine Eingabedatei ein, sagen wir "input.s" und einen Ausgabedateinamen, sagen wir "output.axf" und das Skript erzeugt die gewünschte Ausgabe (ausführbar - .axf). Jetzt möchte ich eine zusätzliche Option, in der, wenn der Benutzer keinen Ausgabedateinamen in den Argumenten gibt, ich selbst eine Standardausgabedatei erstellen möchte. Das Skript wird wie folgt dar:Zuweisen einer Variablen ein Dateiname in Bash
#!/bin/bash
echo Enter the names of the input file and output file
read input_file output_file
if [ -z "$input_file" ]
then
echo "No input supplied"
elif [ -z "$output_file" ]
then
$output_file=brot.axf
elif [ -z "$input_file" && -z "$output_file" ]
then
echo "No input/output file supplied"
fi
ifilename=$(basename "$input_file")
ifilename="${input_file%.*}"
armasm -g --cpu=8-A.64 "$input_file"
armlink "$ifilename.o" -o "$output_file"
fromelf --test -c $output_file > disassembly.txt
Nun mein Problem ist, dass jedes Mal, wenn ich das Skript ausführen, und geben Sie nicht alles für $ output_file, bekomme ich diesen Fehler:
./script_test.sh: Linie 12 : = brot.axf: Befehl nicht gefunden
Schwerwiegender Fehler: L3901U: Fehlendes Argument für Option 'o'.
Wenn ich jedoch die Eingabe- und Ausgabedateinamen mit Erweiterungen angeben, funktioniert wie erwartet. Wie behebe ich den Fehler und weise der Ausgabedatei einen Standardnamen zu, wenn der Benutzer diesen nicht zuweist?
Copy Paste in shellcheck.net zu entfernen. Ich sehe einige Syntaxverstöße auf den ersten Blick selbst. 1) Variable Zuweisungen haben nicht '$' auf LHS in 'bash', 2. Nicht abgeschlossen '' ' – Inian
Ich habe Änderungen am Skript nach dem Eintragen in shellcheck.net. Es ist ein nützliches Werkzeug. Danke –