Beim Lesen des Einrichtungshandbuchs stieß grub
ich auf einen Artikel, in dem behauptet wurde, ich müsse eine der folgenden beiden Syntaxen verwenden:
echo \(hd0,0\) >> /boot/grub/grub.conf
oder
echo '(hd0,0)' >> /boot/grub/grub.conf
weil in der Befehlszeile Klammern auf besondere Weise interpretiert werden. Was ist das Besondere an den Klammern? Wie werden sie interpretiert?
$()
und()
?$()
ist die Befehlsersetzung, das()
ist eine Subshell. Beide führen Befehle aus, der Unterschied ist, was mit der Ausgabe passiert. Die Namen sind viel einfacher zu suchen als die Symbole. Siehe auch unix.stackexchange.com/q/213530/9537Eine in runde Klammern gesetzte Befehlsliste wird als Subshell ausgeführt.
Variablen in einer Subshell sind außerhalb des Codeblocks in der Subshell nicht sichtbar. Sie sind für den übergeordneten Prozess und die Shell, die die Subshell gestartet hat, nicht verfügbar. Dies sind im Grunde genommen lokale Variablen.
Siehe Linuxtopia - Kapitel 20. Subshells
quelle