«X» используется (несколько суеверно *), чтобы предотвратить ошибки, если переменная пустая или не установлена. В большинстве случаев цитаты заботятся об этом для вас. Помещая букваль сначала и переменную вторую, вы устраняете ошибки в случаях, когда переменная содержит строку, начинающуюся с тире, так как test
(aka [
) будет считать, что это оператор. В случае вашего примера было бы предпочтительнее использовать операторы -z
и -n
, которые проверяют, является ли переменная пустой (нулевой или не заданной) или не пустой, соответственно.
POSIX оболочки, такие как Bourne (работает в Bash тоже):
[ -z $RABBITMQ_NODE_IP_ADDRESS ] && [ -n $NODE_IP_ADDRESS" ] && RABBITMQ_NODE_IP_ADDRESS=${NODE_IP_ADDRESS}
Bash (и ksh
и zsh
):
[[ -z $RABBITMQ_NODE_IP_ADDRESS && -n $NODE_IP_ADDRESS" ]] && RABBITMQ_NODE_IP_ADDRESS=${NODE_IP_ADDRESS}
* Там могут быть некоторые оболочки, которые нуждаются в " x ", но некоторые люди делают это", потому что это всегда было сделано именно так ".