
Почему нужно SOMETHING=1 && echo $SOMETHING
вернуть &&
Почему 1
не SOMETHING=1 echo $SOMETHING
возвращается1
решение1
Потому что bash выполняет расширение переменной до интерпретации операторов присваивания переменной. Так что, поскольку НЕЧТО не было ранее определено, ваша команда становится…
SOMETHING=1 echo ''
…затем его казнят.
решение2
экспорт и эхо одновременно
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:~#
решение3
Вам нужно будет оценить переменную позже (после того, как она будет назначена). Используйте, например,
SOMETHING=1 eval 'echo $SOMETHING'
для предотвращения распространения SOMETHING
.