Ich würde gerne Quelle (dh nicht nennen ) ein Skript von jedem Shell (bash / csh sind die primären Ziele, aber Fisch, zsh, KSH, und rc wäre auch interessant).
Ich möchte, ob das Skript eine einzelne Datei sein kann - dh nicht eine Datei für jeden Shell-Dialekt.
Kann ich das machen?
Ich denke an etwas Ähnliches wie:
if shell is bash then
# bash code here
else
if shell is csh then
# csh code here
else
if shell is xxxsh then
# xxxsh code here
fi
endif
fi
Also kann ich tun:
csh% source my_script
bash$ . my_script
Das Problem ist - natürlich if
ist das nicht in jedem Dialekt gleich, also muss ich irgendwie eine Syntax verwenden, die für jede Shell gültig ist.
Bearbeiten
Das Erkennen der Shell ist der erste Schritt, bei dem das Bestimmen der Shell im Skript zur Laufzeit hervorragende Arbeit leistet.
Ein ebenso wichtiger Schritt ist, wie der Code für die verschiedenen Abschnitte für Shells zitiert werden sollte, um andere Shells nicht zu verwirren. Denken Sie: Wie können Sie im Abschnitt für Bash <<here_document
alle Zeichen in allen Kombinationen enthalten, die in Bash legal, aber in jeder anderen Shell illegal sind, ohne dass dies die anderen Shells verwirrt? Dies wird von keiner der Antworten / verknüpften Antworten abgedeckt.