wenn ich diesen Alias von der Kommandozeile aus erstelle, funktioniert alles einwandfrei alias ejecta='for I in 1 2 3; do /usr/sbin/diskutil unmountDisk disk$I;done'
Wenn der gleiche Alias in .bash_profile erstellt wird, löscht das Betriebssystem „$I“
Das ist eine Anfängerfrage, aber es ist mir peinlich, zu sagen, dass ich die Lösung nicht finden kann. Muss ich ein Skript erstellen und den Alias darauf verweisen lassen?
Antwort1
Was Sie versuchen, sollte funktionieren. Das $I
wird wahrscheinlich ausgewertet, wenn Ihr Alias definiert wird. Das bedeutet wahrscheinlich, dass Ihnen irgendwo ein paar Anführungszeichen fehlen.
Ohne den relevanten Teil Ihres .bash_profiles einzuschließen, ist es jedoch schwer zu sagen.
Antwort2
In Ihrer Frage umgeben Sie den Alias mit einfachen Anführungszeichen, was die richtige Vorgehensweise ist, um die Auswertung der Variable zu verzögern. Ich vermute, dass Sie in Ihrer Frage doppelte Anführungszeichen verwenden, .bash_profile
die eine sofortige Auswertung der Variable ermöglichen. Da die Variable zu diesem Zeitpunkt wahrscheinlich nicht gesetzt ist, wird sie als Nullzeichenfolge ausgewertet.