удар - Неисключенный Маркер

Я пишу сценарий удара для автоматизации моего процесса загрузки. В разделе это дает ошибку:

синтаксическая ошибка около неожиданного маркера 'newURL= $ (повторяют $URL | sed 's/&:/$index /')'

Тот раздел кода здесь:

# Downloading the pdf's.
for index in {$startedNumber..$endedNumber} do
    newURL=$(echo $URL | sed 's/&:/$index/')
    wget $newURL
done

Это описатели секции URL как http://xxxx.com/xxx/yyy/zzz&:.pdf"" и находит "и": часть. Когда это найдет, что, изменит его на $index. Так, чтобы я мог загрузить эти строки: http://xxxx.com/xxx/yyy/zzz1.pdf http://xxxx.com/xxx/yyy/zzz2.pdf http://xxxx.com/xxx/yyy/zzz3.pdf http://xxxx.com/xxx/yyy/zzz4.pdf (... и продолжается до de $endedNumber),

Что я должен сделать для решения этой проблемы?

0
задан 14 March 2020 в 12:23

3 ответа

do ключевое слово должно или быть на новой строке или после a ;.

Общее эмпирическое правило от личного опыта, когда об ошибке сообщают как являющийся около неожиданного маркера, всегда смотрит на код перед нею (не только в ударе)

1
ответ дан 15 March 2020 в 07:39
for index in {$startedNumber..$endedNumber}; do
    newURL=$(echo $URL | sed 's/&:/$index/') &&
    wget $newURL;
done
0
ответ дан 15 March 2020 в 07:39

Существует несколько проблем здесь в дополнение к обращенным в текущих ответах

  1. удар (непосредственно) не поддерживает использование переменных оболочки в расширении фигурной скобки. Посмотрите, например,

  2. $index привычка расширена, потому что Ваше sed выражение единственно заключается в кавычки. Посмотрите, например,

  3. избегайте использования имен переменных ВСЕХ ЗАГЛАВНЫХ БУКВ и не забывайте к расширениям переменной двойной кавычки

На самом деле Вам не нужно sed вообще, так как сама оболочка может сделать простой поиск и замену на переменных непосредственно. Так, например,

startedNumber=3; endedNumber=7

url="http://foo&:bar"

for index in $(seq $startedNumber $endedNumber); do 
  echo wget "${url/&:/$index}"
done
wget http://foo3bar
wget http://foo4bar
wget http://foo5bar
wget http://foo6bar
wget http://foo7bar

(удалите echo для Вашего реального случая).

1
ответ дан 15 March 2020 в 07:39

Другие вопросы по тегам:

Похожие вопросы: