Today=$(date)
for i in {2..15}
do
week_{$i}=$(date -d "$Today +$i week")
echo ${week_2}
done
Я не получаю никаких значений на выходе в BASH.Динамически меняющееся имя переменной в unix through for loop
Today=$(date)
for i in {2..15}
do
week_{$i}=$(date -d "$Today +$i week")
echo ${week_2}
done
Я не получаю никаких значений на выходе в BASH.Динамически меняющееся имя переменной в unix through for loop
Один из способов ...
Today=$(date) for i in {2..15} do tmp=$(date -d "$Today +$i week") eval week_${i}=\$tmp eval echo \$week_${i} done
Второй путь ...
Today=$(date) for i in {2..15} do week_[$i]=$(date -d "$Today +$i week") echo ${week_[$i]} doneТретий путь ...
Today=$(date)
for i in {2..15}
do
eval echo \${week_${i}:=$(date -d "$Today +$i week")} > /dev/null
done
for i in {2..15}
do
eval echo \$week_${i}
done
Не могли бы вы немного объяснить? Я не новичок в bash, но я в основном просто * использовал * его. Передавая присваивания переменных изнутри цикла вовнутрь, я никогда не мог справиться, и у меня были некоторые попытки. Это был цикл while, но я могу «поверить» в «может быть очень другим. –
это работает !! Спасибо – user5705451
В этом примере переменные доступны после цикла. См. Второй цикл в «Третий путь». –
Одна ошибка легко обнаружить в "Сегодня = $ дата", которая присваивает значение ** переменной «дата» ** для переменной с именем «Сегодня». Попробуйте * Сегодня = $ (дата); echo $ Сегодня * для начала. –
Я слабо помню, что for-loop открывает под-оболочку, и любая переменная является локальной для этой под-оболочки и * no way * для установки этих значений в родительской оболочке. –
* no-way * кроме того, чтобы поместить значения в файл (или трубу ??) и извлечь их впоследствии. –