Folgendes berücksichtigen:
$ ksh -c '1(){ echo hi;};1'
ksh: 1: invalid function name
$ dash -c '1(){ echo hi;};1'
dash: 1: Syntax error: Bad function name
$ bash -c '1(){ echo hi;};1'
bash: `1': not a valid identifier
bash: 1: command not found
$ mksh -c '1(){ echo hi;};1'
hi
Im Grunde war ich versuche , Funktionen zu erklären 1
und 0
welche wären Kürzel für true
und false
, aber wie man sehen kann ich lief in Probleme mit numerischen Namen in Funktionen. Das gleiche Verhalten tritt bei Aliasnamen und zweistelligen Namen auf.
Frage ist "warum"? Wird es von POSIX beauftragt? oder nur eine Eigenart von Bourne-ähnlichen Muscheln?
Siehe auch verwandte Fragen zu dieser.
0
es sich true
um Shell-Scripting handelt und dies 1
ist false
(tatsächlich wird jede Nicht-Null als falsch behandelt), falls jemand, der dies liest, es nicht weiß. Dies ist rückwärts von den meisten anderen Programmiersprachen.
true
in der Shell. Bei der arithmetischen Erweiterung werden die $((...))
Rückgabestatus jedoch umgedreht - 1 ist true
und 0 steht false
für Konsistenz mit der C-Sprachsyntax. Versuchen Sie zum Beispiel, bash -c 'echo $((1==1));echo $((1==2))'
was ich außerhalb dieser Frage zu tun versuchte, war tatsächlich das Verhalten "umzukehren". Sehen Sie sich das letzte Beispiel meiner Antwort hier an, um zu sehen, was genau ich versucht habe. Dumme Idee, aber funktioniert trotzdem