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$
quelle
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[
.help
Befehls nicht wirklich bewusst (nicht verfügbar in Zsh, das ich meistens benutze). Ich habe gerade meine Antwort in Wiki geändert. Sie können Ihre Notiz auch direkt in die Antwort aufnehmen.help
:bh () (bash -c 'for i; do help "$i"; done' bash "$@")
test a = a ]
beschwert sich über zu viele Argumente. Was lässt Sie denken,test
sollte ein akzeptieren]
?]
eine nicht leere Zeichenfolge?" Abfrage.