Вместо того, чтобы использовать echo
для печати Curve Name
, а затем избавиться от первого поля строки, почему бы просто не заменить ненужное поле текстом, который вы хотите?
awk 'NR==1 {$1 = "Curve Name"; print; exit}' testfile
После многочисленных ошибок вот рабочий код:
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