Почему bash нужен && для отображения переменной в одной строке?


12

Почему SOMETHING=1 && echo $SOMETHINGнужно &&возвращаться 1
Почему не SOMETHING=1 echo $SOMETHINGвозвращается1


7
Позор тому, кто отрицал ваш вопрос, особенно не оставляя конструктивной обратной связи. Это правильный вопрос, и порядок, в котором bash выполняет раскрытие слова / параметра / переменной / тильды и выполнение команды, довольно сложен. Я даю тебе +1.
Спифф


технически, «echo 1» возвращает 0, а вывод равен 1 ..., т. е. «echo» выходит со статусом «0» и отображает для вывода аргументы. Фраза «возвращает 1» для меня подразумевала «выходной статус», а не «выходы», и на первый взгляд была немного запутанной.
Майкл

Ответы:


8

Потому что bash выполняет раскрытие переменных перед интерпретацией операторов присваивания переменных. Итак, поскольку ЧТО-ТО не было предварительно определено, ваша команда становится ...

SOMETHING=1 echo ''

... затем исполняется.


Является ли расширение переменной таким же, как замена переменных?
Джоэл

1
@JoelL: Верно
Гордон Дэвиссон

0

экспорт и эхо одновременно

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:~# 

Еще один тупой пример xD

root@kali:~# echo ${SOMETHING=1} ${PLUS=+} ${SUMTHIN=2} ${EQUALS==} && expr $SOMETHING $PLUS $SUMTHIN
1 + 2 =
3
root@kali:~# 
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.