Я написал следующий сценарий bash, чтобы написать прокси в файле apt.conf и скрыть его от эхо-сигнала на терминал.
sudo echo "Acquire::http::proxy "http://"$prox":"$port"/";" | sudo tee -a /etc/apt/apt.conf > /dev/null 2>&1
sudo echo "Acquire::https::proxy "https://"$prox":"$port"/";" | sudo tee -a /etc/apt/apt.conf > /dev/null 2>&1
sudo echo "Acquire::ftp::proxy "ftp://"$prox":"$port"/";" | sudo tee -a /etc/apt/apt.conf > /dev/null 2>&1
Хотя команды записывают в файл apt.conf , но при запуске скрипта я получаю следующую ошибку:
E: Syntax error /etc/apt/apt.conf:6: Extra junk at end of file
Помогите оценить это!
Ответ Ravexina правильно определяет основную причину:
Вам нужно указать значение конфигурации.Однако, если вы обнаружите, что экранированные кавычки трудно читать или просто уродливы, есть альтернатива:
printf 'Acquire::http::proxy "http://%s:%u";\n' "$prox" "$port" | sudo tee -a /etc/apt/apt.conf > /dev/null
Я думаю, что вы можете сделать две другие строки самостоятельно.
В коде есть много повторений, которые вы могли бы избежать с помощью цикла:
for proto in http https ftp; do
printf 'Acquire::%s::proxy "%s://%s:%u";\n' "$proto" "$proto" "$prox" "$port"
done |
sudo tee -a /etc/apt/apt.conf > /dev/null
Ответ Ravexina правильно определяет основную причину:
Вам нужно указать значение конфигурации.Однако, если вы обнаружите, что экранированные кавычки трудно читать или просто уродливы, есть альтернатива:
printf 'Acquire::http::proxy "http://%s:%u";\n' "$prox" "$port" | sudo tee -a /etc/apt/apt.conf > /dev/null
Я думаю, что вы можете сделать две другие строки самостоятельно.
В коде есть много повторений, которые вы могли бы избежать с помощью цикла:
for proto in http https ftp; do
printf 'Acquire::%s::proxy "%s://%s:%u";\n' "$proto" "$proto" "$prox" "$port"
done |
sudo tee -a /etc/apt/apt.conf > /dev/null
Ответ Ravexina правильно определяет основную причину:
Вам нужно указать значение конфигурации.Однако, если вы обнаружите, что экранированные кавычки трудно читать или просто уродливы, есть альтернатива:
printf 'Acquire::http::proxy "http://%s:%u";\n' "$prox" "$port" | sudo tee -a /etc/apt/apt.conf > /dev/null
Я думаю, что вы можете сделать две другие строки самостоятельно.
В коде есть много повторений, которые вы могли бы избежать с помощью цикла:
for proto in http https ftp; do
printf 'Acquire::%s::proxy "%s://%s:%u";\n' "$proto" "$proto" "$prox" "$port"
done |
sudo tee -a /etc/apt/apt.conf > /dev/null
Вы должны указать значение конфигурации:
"Acquire::http::proxy \""http://"$prox":"$port""\";"
Если вы попытаетесь повторить это:
echo "Acquire::http::proxy \""http://"$prox":"$port""\";"
вывод должен выглядеть следующим образом:
Acquire::http::proxy "http://x.x.x.x:yy";
И не:
Acquire::http::proxy http://x.x.x.x:yy/;
Поскольку http://x.x.x.x:yy/ является нежелательным в глазу apt.
Также вам не нужно sudo до echo ], как упоминал Давид;)
Вы должны указать значение конфигурации:
"Acquire::http::proxy \""http://"$prox":"$port""\";"
Если вы попытаетесь повторить это:
echo "Acquire::http::proxy \""http://"$prox":"$port""\";"
вывод должен выглядеть следующим образом:
Acquire::http::proxy "http://x.x.x.x:yy";
И не:
Acquire::http::proxy http://x.x.x.x:yy/;
Поскольку http://x.x.x.x:yy/ является нежелательным в глазу apt.
Также вам не нужно sudo до echo ], как упоминал Давид;)
Вы должны указать значение конфигурации:
"Acquire::http::proxy \""http://"$prox":"$port""\";"
Если вы попытаетесь повторить это:
echo "Acquire::http::proxy \""http://"$prox":"$port""\";"
вывод должен выглядеть следующим образом:
Acquire::http::proxy "http://x.x.x.x:yy";
И не:
Acquire::http::proxy http://x.x.x.x:yy/;
Поскольку http://x.x.x.x:yy/ является нежелательным в глазу apt.
Также вам не нужно sudo до echo ], как упоминал Давид;)