Переменная сценария Linux Bash - PullRequest
2 голосов
/ 28 февраля 2012

В linux мы можем изменить переменную http_proxy в терминале на export http_proxy=http://x.x.x.x:x.Но я хочу сделать это с помощью сценария.Таким образом, у меня есть следующий код:

#!/bin/bash

FILE="_reliable_list.txt"

for line in $(cat $FILE)
do
    proxy="http://$line"
    export http_proxy=$proxy
done

В конце на том же терминале, когда я проверяю значение переменной http_proxy, она равна нулю.Я хочу прочитать из файла прокси-адреса и экспортировать их в переменную http_proxy, а после использования это с wget.Просто я хочу автоматизировать этот код:

export http_proxy=http://x.x.x.x:x
wget mysite.com

Если какие-либо другие идеи, я буду очень рад.

Ответы [ 4 ]

3 голосов
/ 28 февраля 2012

Вы можете изменить скрипт для встраивания вызова wget, предполагая, что новый файл содержит URL:

#!/bin/bash

URLS="_url_list.txt"
FILE="_reliable_list.txt"

i=1
for line in $(cat $FILE)
do
    export http_proxy="http://$line"
    wget $(head $i $URLS | tail -1 | tr -d '\n')
    let i++
done
2 голосов
/ 28 февраля 2012

Вместо cat FILE я всегда использую «пока читаю».

Я не знаю, имеет ли это здесь значение или есть ли причина использовать один над другим.

Пример:

while read LINE
do

  export http_proxy="http://${LINE}"

done < $INPUT_FILE
2 голосов
/ 28 февраля 2012

Прежде всего, вы хотите source этот файл вместо его запуска. Когда вы используете export, он не распространяется на вызывающую оболочку.

Во-вторых, ваш код не очень хорош. Вы должны использовать возможности чтения файлов bash вместо cat. Кроме того, ваш код просто выбирает последнюю строку в этом файле и использует ее в качестве прокси. Вы уверены, что это то, что вы хотели сделать? Если это так, вы можете просто использовать tail.

0 голосов
/ 28 февраля 2012

Вы можете просто сделать это в командной строке:

export http_proxy="$(tail -1 _reliable_list.txt)"

ИЛИ, если в скрипте есть строка, указанная выше, скажите script.sh, а затем запустите так:

. ./script.sh

получить экспортированные переменные в текущей оболочке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...