während er auf die harte Tour lernen bash durch, fand ich , dass [
und test
sind beide Befehle und Synonyme, und beide sind builtin.
Da es sich um ein eingebautes Gerät handelt, sollte es keinen Fehler geben builtin [
, aber ich -bash: [: missing `]'
bekomme, kann mir jemand das Verhalten des eingebauten hier erklären. Danke im Voraus.
anupam:Markdown$ which [
/usr/bin/[
anupam:Markdown$ echo $?
0
anupam:Markdown$ which test
/usr/bin/test
anupam:Markdown$ echo $?
0
anupam:Markdown$ builtin test
anupam:Markdown$ echo $?
1
anupam:Markdown$ builtin [
-bash: [: missing `]'
anupam:Markdown$ echo $?
2
anupam:Markdown$
builtin
da nicht. Builtins haben Vorrang vor externen Befehlen, würden also nur[
das Builtin ausführen. Derbuiltin
Befehl ist nützlicher, wenn Sie eine Funktions- oder Alias-Maskierung haben[
.