In dieser Antwort hatte ich einen Code, der lautete:
if [[ $ZSH_VERSION ]]; then
Dies wurde bearbeitet , um zu sein:
if [[ -n $ZSH_VERSION ]]; then
Update: Ich habe gerade den Bearbeitungskommentar gesehen:
[[x]] hat bis vor kurzem in zsh nicht funktioniert
Ich sah durch die zsh
Release Notes und nicht die Bezugnahme auf diese finden konnte.
Welche zsh
Version zuerst erlaubt [[ x ]]
?
Antworten:
Aus den
zsh
5.5.1-Dokumenten fürCONDITIONAL EXPRESSIONS
Mit dem Quellbaum herum,
Die Überprüfung von
git log
zeigt, dass die Codeänderung etwas früher als die Dokumentation erfolgte:Die Zuordnung der
ChangeLog
Datei zugit tag
ist mir nicht klar, aber es scheint, dasszsh
5.0.6 (Do 28. August 19:07:04 2014 +0100) die erste Version mit dieser Änderung ist.quelle
git tag --contains 9d47e8398d299e53ffe4e7ddf3731d2fedae9948
für die Liste der Git-Tags, die das Commit enthalten. Das32609
ist ein Hinweis auf die Mailingliste: zsh.org/cgi-bin/mla/redirect?WORKERNUMBER=32609Es wird expliziter gezeigt, was der Code tut.
Persönlich würde ich in diesem Fall etwas bevorzugen,
[[ -n $ZSH_VERSION ]]
weil es zeigt, dass es auf Nicht-Leere des Wertes der var testet.Aber ich habe oft vars, die für die boolesche Bedeutung in meinen Skripten gedacht sind, und ich benenne sie entsprechend, wie
is_logged_in
oderrunning_in_background
. Wenn solche Variablen in meinen Skripten nicht gesetzt sind, sind sie esfalse
. Und in solchen Fällen bevorzuge ich die Verwendung[[ running_in_background ]]
, nur weil dies ohne den-n
Teil besser liest , wie ein normaler Satz:Aber IMO ist es nur Geschmackssache und sollte als solche nicht bearbeitet werden: Es ist Ihr Code.
quelle