Dlaczego bash potrzebuje && do echa zmiennej w jednym wierszu?


12

Dlaczego SOMETHING=1 && echo $SOMETHINGmusi &&wrócić? 1
Dlaczego nie SOMETHING=1 echo $SOMETHINGzwraca?1


7
Wstydź się za to, kto głosował na twoje pytanie, szczególnie bez pozostawiania konstruktywnych opinii. To prawidłowe pytanie, a kolejność, w jakiej bash rozwija słowo / parametr / zmienną / tyldę i wykonywanie poleceń jest trudna. Daję ci +1.
Spiff


technicznie „echo 1” zwraca 0, a wynikiem jest 1…, co oznacza, że ​​„echo” wychodzi ze statusem „0” i wyświetla się, aby podać argumenty. Frazowanie „zwraca 1” oznaczało dla mnie „wyjście staus”, a nie „wyjście”, i na pierwszy rzut oka było trochę mylące.
Michael

Odpowiedzi:


8

Ponieważ bash dokonuje interpretacji zmiennych przed interpretacją instrukcji przypisania zmiennych. Ponieważ COŚ nie zostało wcześniej zdefiniowane, polecenie staje się…

SOMETHING=1 echo ''

… Następnie zostaje stracony.


Czy rozszerzenie zmiennej jest takie samo jak podstawienie zmiennej?
Joel

1
@Jelel: Poprawnie
Gordon Davisson

0

eksport i echo w tym samym czasie

root@kali:~# echo ${SOMETHING=1}
1
root@kali:~# echo $SOMETHING
1
root@kali:~# unset SOMETHING
root@kali:~# echo $SOMETHING

root@kali:~# echo ${SOMETHING=1}
1
root@kali:~# 

Kolejny lepszy przykład xD

root@kali:~# echo ${SOMETHING=1} ${PLUS=+} ${SUMTHIN=2} ${EQUALS==} && expr $SOMETHING $PLUS $SUMTHIN
1 + 2 =
3
root@kali:~# 
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.