Почему эта конкатенация строк bash не работает? - PullRequest
0 голосов
/ 28 февраля 2019
#!/bin/sh

VAR_A=100
VAR_B=200

FOO="$VAR_A_$VAR_B"; # 200
BAZ="$VAR_Ax$VAR_B"; # 200

echo $FOO; # 200 instead of 100_200
echo $BAZ; # 200 instead of 100x200

Причина, по которой я думаю, что это должно работать, заключается в том, что я смотрю на него как на sprinf или любой C-подобный формататор строк (% s_% s или% sx% s)

1 Ответ

0 голосов
/ 28 февраля 2019

Проблема в том, что _ является допустимым символом в имени переменной.Чтобы отличить это, используйте фигурные скобки:

FOO="${VAR_A}_$VAR_B"

Для согласованности, вы можете использовать фигурные скобки везде:

FOO="${VAR_A}_${VAR_B}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...