Как выполнить итерацию URL-адресов для команды curl?

( Это должен быть комментарий, но он слишком большой.)

Для тех, кто любит экспериментировать:

Создайте скрипт со списком переданных позиционных параметров, назовите его list_positional_parameters.sh.

#!/bin/bash

# http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_07.html
# Try globbing patterns, e.g. "X[[:digit:]][[:digit:]]" to see what happens

if [ $# -lt 1 ]; then
   echo "Usage: $0 and then at least one parameter"
   exit 1
fi

counter=1

while (($#)); do
   echo "$counter = '$1'"
   # pop positional argument 1 off the stack of positional arguments
   shift
   (( counter++ ))
done

Запустите findс ним в каком-нибудь каталоге $dir:

find "$dir" -exec./list_positional_parameters.sh '{}' ';' | less

Как и ожидалось, во всех вызовах есть только один параметр — имя файла, независимо от того, есть ли в его имени пробелы или нет.

2
21.08.2020, 02:15
1 ответ

Проблема здесь заключалась в том, что окончания строк для bash (Linux )и windows разные, LF и CRLF соответственно (Я не слишком уверен, так как это все для меня новое ). Поэтому, когда я создал файл с элементами, разделенными строками в python, сценарий bash не мог прочитать его очень хорошо, поскольку созданный файл имел окончания CRLF, а сценарий bash читал только LF, делая URL-адреса бесполезными, потому что у них был CR концовка, которой не должно было быть. Я не знал, как решить эту проблему с помощью кода bash, но я создал файл (с помощью python ), в котором каждый элемент был разделен подчеркиванием "_", и добавил последний элемент, n, просто чтобы мне никогда не приходилось иметь дело с окончаниями строк. Затем я просто запустил цикл for в bash, повторяя каждый элемент, разделенный символом подчеркивания, кроме последнего элемента. Это решило проблему.

1
18.03.2021, 23:11

Теги

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