Ich möchte ein Unix / Linux-Skript updategit.sh
mit einem Standardparameter schreiben , um git zu bestätigen. updategit.sh
sollte POSIX-kompatibel sein. Ich hoffe, POSIX behebt einige der schlimmsten Inkompatibilitäten der Unix / Linux-Shells.
Syntax: updategit.sh {$1}
{$1}
bedeutet, dass der Parameter $1
optional ist.
1) Wenn kein Parameter an updategit.sh
die letzte Aktion im Skript übergeben wird, sollte dies sein:
git commit -m 'Patches #1023, #1016.4 .. .17 reapplied. See e-mail from Paul (paul@sh.ts) send at 2016-01-26 08:56'
Reicht es aus, es in einfachen Anführungszeichen zu übergeben, wenn der Text kein einfaches Anführungszeichen enthält?
2) Es sollte möglich sein, einen optionalen Parameter an $1
zu übergeben updategit.sh
. Die natürliche Syntax wäre, den Parameter in doppelte Anführungszeichen zu setzen. Ich denke das wird nicht möglich sein. Ich möchte in der Lage sein, so viel wie möglich zu erreichen, updategit.sh
ohne dass die Shell den Eingabeparameter zerstört und der Befehl fehlschlägt, weil die Shell mit der Eingabe in Unordnung gerät.
Die natürliche Syntax wäre etwa so:
$ ./updategit.sh "New template GetShape()"
$ ./updategit.sh "Patch #312.5 applied. See Eve's email (eve@stoneage.nix) from 2016-02.29 09:43"
$ ./updategit.sh "Round to .5 fixed"
$ ./updategit.sh
Es ist klar, dass die Shell mit der Eingabe durcheinander kommt. Wie nahe könnte ich der "natürlichen" Syntax kommen, ohne git commit -m $1
zu scheitern? AFAIK Der Befehl git commit -m $1
muss in etwas Robusteres umgeschrieben werden.
if [ ! "$1" ]
. Achten Sie auf die Leerzeichen[
und]
- es ist ein Befehl , keine magische Sprachsyntax.