lese ich durch meine .bashrc und bemerkte die folgende
cd "[email protected]" && some_other_function
Was genau macht das @ $ bedeuten?
lese ich durch meine .bashrc und bemerkte die folgende
cd "[email protected]" && some_other_function
Was genau macht das @ $ bedeuten?
"[email protected]"
wird zu einer Liste von in Anführungszeichen gesetzten Befehlszeilenparametern erweitert. Es ist subtil verschieden von "$*"
: gegebenen
set "a b" c d
"$*"
expandiert nach
"a b c d"
während "[email protected]"
zu
"a b" c d
und $*
(oder [email protected]
) erweitert expandiert nach
a b c d
das heißt, "$*"
produziert eine einzelne Zeichenfolge, aber "[email protected]"
repliziert die ursprüngliche Zitat, $*
verliert das Zitat.
Von man bash
:
@
erweitert sich auf die Positionsparameter, ausgehend von einem. Wenn die Erweiterung in doppelten Anführungszeichen auftritt, wird jeder Parameter in ein separates Wort erweitert. Das heißt, "$ @" entspricht "$ 1" "$ 2" ... Wenn die doppelzitierte Erweiterung innerhalb eines Wortes auftritt, wird die Erweiterung des ersten Parameters mit dem Anfangsteil des ursprünglichen Wortes und der Erweiterung verknüpft der letzte Parameter ist mit dem letzten Teil des ursprünglichen Wortes verbunden.
Es sind alle Positionsparameter, die jeweils doppelt zitiert werden. http://tldp.org/LDP/abs/html/internalvariables.html#APPREF
$ @ repräsentiert alle Argumente, die an das Skript übergeben werden.
Wenn Sie ein Skript aufrufen wie folgt benannt foo.sh:
$> foo.sh boo goo loo
Die Ausgabe von $ @ wird dies:
> boo goo loo
Wenn [email protected]
leer ist, [email protected]
nicht auf eine leere Zeichenfolge erweitern; Es ist vollständig entfernt. Also Ihr Test ist nicht:
[ -n "" ]
sondern:
[ -n ]
Jetzt -n
ist kein Operator, sondern nur eine nicht leere Zeichenfolge, die immer als wahr prüft.
Siehe [UNIX-Shell-Programmierung spezielle Variablen] (http://stackoverflow.com/questions/3206312/unix-shell-programming-special-variables) –