- Der Befehl funktioniert ordnungsgemäß für dieses Format:
Code: Select all
./co2-calculator --start Hamburg --end Berlin --transportation-method diesel-car-medium
Code: Select all
Output:
Start city: Hamburg
End city: Berlin
Transportation method: diesel-car-medium
- Aber wenn ich die folgenden Befehle mit unterschiedlichen Argumentformaten oder -reihenfolgen ausprobiere, erhalte ich Fehlermeldungen:
Code: Select all
./co2-calculator --start "Hamburg" --end "Berlin" --transportation-method=dieselcar-medium
Code: Select all
Error:
Unrecognised option '--transportation-method=dieselcar-medium'
Missing mandatory option --transportation-method, Transportation method.
Code: Select all
@ShellComponent
public class HelloCommand {
@ShellMethod("Calculate CO2 emissions for the trip.")
public String calculateCO2(
@ShellOption(value = "--start", help = "Start city") String start,
@ShellOption(value = "--end", help = "End city") String end,
@ShellOption(value = "--transportation-method", help = "Transportation method") String transportationMethod) {
System.out.println("Start city: " + start);
System.out.println("End city: " + end);
System.out.println("Transportation method: " + transportationMethod);
}
}
Was ich brauche:
Ich muss eine Logik implementieren, die:
jede Reihenfolge von Argumenten verarbeiten kann.
Akzeptiere sowohl Leerzeichen als auch Gleichheitszeichen (=) für die Zuweisung von Werten.
Verarbeiten Sie alle drei Befehlszeilenargumente ordnungsgemäß, unabhängig von der Reihenfolge oder den Trennzeichen verwendet.
Fragen:
- Wie kann ich dafür sorgen, dass die Spring Shell-Anwendung Optionen wie --start "Hamburg" oder --start=Hamburg (mit und ohne Leerzeichen) verarbeitet?
- Welche Änderungen muss ich an den @ShellOption-Annotationen oder anderen Teilen der Logik vornehmen, um beides ordnungsgemäß zu verarbeiten --transportation-method=dieselcar-medium und --transportation-method Diesel-Car-Medium-Formate?
- Gibt es Best Practices oder bekannte Lösungen für die Verarbeitung dynamischer Befehlszeilenoptionen in Spring Shell, die ich möglicherweise übersehen habe?
Mobile version