Как разместить входные аргументы в ячейке сценария bash? - PullRequest
0 голосов
/ 08 мая 2020

У меня

numdays=$1
startday=$2

# This calculates the dates to retrieve queries
for i in {1..$numdays}; do
  StringArray+=($(date -I -d '${startday} + $i days'))
done

Но он возвращает date: invalid date ‘${startday} + $i days’, но я не уверен, как строить строки.

1 Ответ

2 голосов
/ 08 мая 2020

Раскрытие фигурных скобок {x..y} происходит перед заменой переменной $x. Итак, {0..$x} не будет работать - расширение фигурных скобок ничего не сделает, а просто расширит x.

Расширение переменной не происходит в одиночных кавычках. Таким образом, '${startday}' буквально равно строке, и расширение ${...} будет , а не . Не забудьте поместить расширения внутри двойных кавычек.

В вашем случае вы могли бы использовать seq:

for i in $(seq $numdays); do
    ... "${startday} + $i days"

Я бы:

readarray -t StringArray < <(seq $numdays | xargs -I{} date -I -d "$startday + {} days")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...