Ich bin mit einem Dienstprogramm arbeiten (unison, aber das ist nicht der Punkt), die Parameter wie akzeptiert:in sh Parameter manipulieren
$ unison -path path1 -path path2 -path path3
Ich möchte ein sh-Skript schreiben, die ich so laufen könnte:
$ myscript path1 path2 path3
ich hoffe auf eine Posix-konforme Lösung, aber bash-spezifische wäre auch gut.
Ich vermute, es etwas sein sollte:
#!/bin/sh
unison ${*//-path }
Aber das funktioniert nicht.
EDIT: OK, ich glaube ich etwas bekam:
#!/bin/bash
PARAMS=
for arg in "[email protected]"
do
PARAMS+=" -path '$arg'"
done
unison $PARAMS
Die Probleme sind dies funktioniert nur in bash, und ich bin mir ziemlich sicher, dass es einen besseren Weg, um die Parameter zu zitieren.
Sind Sie hoffen auf eine One-Line-Lösung, die keine "for" -Schleife beinhaltet? – eduffy
Jede Lösung wirklich – itsadok
Die Einführung der einfachen Anführungszeichen ist wahrscheinlich eine schlechte Idee. Wie geschrieben, werden die Zitate durch den Unison-Befehl gesehen, was nicht das ist, was Sie wollen. Das Äußere des Arguments mit einfachen Anführungszeichen zu schützen, ist OK, wenn Sie keine einfachen Anführungszeichen in den Argumenten haben - aber Sie benötigen wahrscheinlich ein Eval, damit es korrekt funktioniert. –