завихрение цикла получает удар запроса

Существует проект, чье подобие доли цели с PowerShell: Hotwire. Это комбинирует регулярный sh со сценариями Python и окном/графической средой. Вы могли посмотреть на него.

Это базируется вокруг объектно-ориентированного конвейера, который можно расширить с помощью собственных объектов путем обертывания существующих программ или пользования библиотеками Python.

5
17.09.2011, 20:05
2 ответа

Попробуйте эту конструкцию вместо этого:

 while read author; do
      curl "http://www.test.com/authors?string=$author&proc=39"
 done < authors

Это сохранит Вас кошка, имея необходимость сделать вещи в обратных галочках, и т.д. Это также позволило бы Вам читать несколько столбцов из входного файла, если бы Вы хотели, но указывающий всего, что одна переменная для выборки как в моем примере получит целую строку.

5
27.01.2020, 20:34
  • 1
    работы diddnt, я не думаю, что это будет работать –   11.05.2011, 21:46
  • 2
    Как насчет Вас пробуют его и говорят, что не работает конкретно. Эта структура делает, она намного легче обработать пробелы и, такие как целая строка читается в переменную. спасибо –  Caleb 11.05.2011, 21:53
  • 3
    Если ${author} включает пробелы или подобные символы, Вы захотите к URL, кодируют их, иначе можно найти, что Вы получаете ошибки как code 400, message Bad request syntax ('GET /authors?string=shakespeare, w.&proc=39 HTTP/1.1') с Вашего сервера HTTP. –  Johnsyweb 11.05.2011, 22:20

авторы содержат имена как с пробелами, и я предполагаю точки

Несколько вещей, продолжающихся:

В первую очередь, путь Вы делаете for цикл просто не работает. Попробуйте это:

 for i in `cat authors`
 do
    echo "Author = \"$i\""
 done

Посмотрите то, что продолжается? Каждый пробел разделяет значение для $i. Если у Вас будет имя и фамилия, то Вы будете получать одну строку только с именем и одну строку только с фамилией.

Теперь попробуйте это:

cat authors | while read i
do
    echo "Author = \"$i\""
done

Немного лучше? Теперь, $i Ваша вся строка. (Да, я знаю о "бесполезной кошке", но вижу, куда я иду сюда!)

Второй из всех, Вам, вероятно, придется преобразовать те пробелы и периоды в допустимые символы URL. Пробелы должны быть преобразованы в %20. Давайте проявим другой подход:

 sed 's/ /%20/g' authors | while read test
do
    echo "curl *line here* www.test.com/authors?string=$i&proc=39"
done

(Теперь, Вы видите, почему я имел cat.)

Это должно распечатать Вашу вихревую команду. То, что я делаю, берет authors файл и преобразование пробелов к строке %20. Теперь, я могу избавиться от кавычек вокруг строки, которые также вызывают проблемы.

Таким образом мы можем теперь избавиться от эха и выполнить фактическую команду CURL:

 sed 's/ /%20/g' authors | while read test
do
    curl *line here* www.test.com/authors?string=$i&proc=39
done

Теперь, что делает *line here* представить? Тот Ваш список опций? О, и у Вас были авторы вместо авторов в Вашей программе. Вы вводили его с опечаткой здесь, или это - способ, которым Ваша программа предполагает, чтобы быть?

6
27.01.2020, 20:34

Теги

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