Как вызвать список переменных для цикла в shell script.variable, хранятся в файле [duplicate]

16
задан user123444555621 5 December 2012 в 07:10
поделиться

3 ответа

Я знаю, что никто не упомянет об этом, поэтому я пойду. Вы можете использовать printf!

#!/bin/bash

CONFIG_OPTION="VENDOR_NAME"
CONFIG_VALUE="Default_Vendor"

printf -v $CONFIG_OPTION "$CONFIG_VALUE"

# Don't believe me?
echo "$VENDOR_NAME"

Done!

Кстати, это довольно быстрый метод (так же быстро, как метод declare).

26
ответ дан gniourf_gniourf 5 September 2018 в 09:50
поделиться

Это использует bash builtins:

#!/bin/bash

VAR1="VAR2"

declare "${VAR1}"="value"

echo "VAR1=${VAR1}"
echo "VAR2=${VAR2}"

Выход скрипта:

VAR1=VAR2
VAR2=value

Вот фрагмент с именами ваших переменных:

#!/bin/bash

CONFIG_OPTION="VENDOR_NAME"

declare "${CONFIG_OPTION}"="value"

echo "CONFIG_OPTION=${CONFIG_OPTION}"
echo "VENDOR_NAME=${VENDOR_NAME}"

Вывод скрипта:

CONFIG_OPTION=VENDOR_NAME
VENDOR_NAME=value
11
ответ дан Kousha 5 September 2018 в 09:50
поделиться

Для чистой оболочки, возможно, попробуйте:

#!/usr/bin/env sh

option=vendor_name
value="my vendor"

eval $option="'$value'" # be careful with ', \n, and \ in value
eval echo "\$$option" # my vendor
echo "$vendor_name" # my vendor

Почему?

#!/usr/bin/env sh
printf -v "var" "val" # prints the flag, var not set
declare var=val # sh: declare: not found
echo ${!var} # sh: syntax error: bad substitution

Мне не нравится eval, но есть ли какие-либо опции POSIX?

1
ответ дан Leonard Pauli 5 September 2018 в 09:50
поделиться