«Недопустимый идентификатор» при чтении файла

Вместо того, чтобы использовать echoдля печати Curve Name, а затем избавиться от первого поля строки, почему бы просто не заменить ненужное поле текстом, который вы хотите?

awk 'NR==1 {$1 = "Curve Name"; print; exit}'  testfile
0
16.03.2020, 19:51
1 ответ

После многочисленных ошибок вот рабочий код:

while IFS= read -r line; do

    likes=$(cut -d ";" -f 1 <<< "$line")
    dislikes=$(cut -d ";" -f 2 <<< "$line")
    likes=$((likes / 50))
    url=$(cut -d ";" -f 3 <<< "$line")

if [ $likes -gt $dislikes ]
then
    youtube-dl --config-location youtube-dl-3.conf $url
fi

done < download.archive

Первая строка команды «read» всегда похожа на приведенную выше (read строку ), а файл, который нужно прочитать, находится после оператора «done» в конце (done < скачать.архив). Этот пост здесь объясняет дополнения IFSи -rи то, что они делают.

При присвоении переменной, я думаю, нельзя ставить пробел между присваиванием. Таким образом, это не работает

likes = $(cut -d ";" -f 1 $line)

Но это:

likes=$(cut -d ";" -f 1 $line)

...За исключением того, что для ссылки на строку, которую программа читает в данный момент, мы должны использовать <<<. Вот так:

likes=$(cut -d ";" -f 1 <<< $line)

Наконец, при проверке условия (в операторе if)должен быть пробел между начальной и конечной скобками, а также условие внутри, например-

if [ $likes -gt $dislikes ]

Чтобы сослаться на переменную url, которая содержит наш URL-адрес для youtube -dl, мы ссылаемся на переменные, используя $. Вот так:

$url

1
28.04.2021, 23:20

Теги

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