Как я могу определить имя переменной в bash, которая включает переменную? - PullRequest
0 голосов
/ 21 октября 2019

Я хочу определить следующее:

COMMIT_ID_${ARCH}=$(git log --format="%H" -n 1)

Но это не удается:

-bash: COMMIT_ID_amd64 = a7c9e0a53972a3d42a8035f45469f1959a0475f8: команда не найдена

Ответы [ 2 ]

2 голосов
/ 21 октября 2019

Использовать ассоциативный массив.

declare -A commit_id

commit_id[$ARCH]=$(git log --format="%H" -n 1)

...

echo "${commit_id[$ARCH]}"
0 голосов
/ 21 октября 2019

Вы можете использовать директиву declare для этого:

declare "COMMIT_ID_${ARCH}"=$(git log --format="%H" -n 1)

Для проверки новой переменной используйте:

declare -p "COMMIT_ID_${ARCH}"

На основе комментариев ниже от OP:

# create your variable
var="COMMIT_ID_${ARCH}"

# set variable by calling git log
declare "$var"=$(git log --format="%H" -n 1)

# examine value of $var
echo "${!var}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...