неопределенная ссылка на ошибку curl_free. Не могу найти, что делать

netcat не должен влиять на отправляемые через него данные, поэтому я пропущу это и сосредоточьтесь на простом подключении к xargs.

Здесь:

echo "aa 'bb cc'" | xargs     

оболочка удаляет один набор кавычек, отправляя строку aa 'bb cc' в xargs. xargs по умолчанию принимает строки в кавычках как отдельные элементы (удаляя кавычки), передавая строки aa и bb cc выполняемой команде.

Здесь, с другой стороны:

echo "aa \'bb cc\'" | xargs   

оболочка снова удаляет один набор кавычек, оставляя aa \'bb cc\'. Одинарные кавычки (с обратной косой чертой или без нее) не являются особыми в двойных кавычках. Однако двойные кавычки внутри двойных кавычек необходимо экранировать.

xargs видит эту строку, самостоятельно удаляет кавычки, но поскольку кавычки теперь экранированы, он просто удаляет обратную косую черту и разделяет на пробелы. Остаются три строки: aa, 'bb и cc'. Что вы видели.

Обычно мы хотим обратного: чтобы xargs не обрабатывал кавычки, поскольку они могут быть частью имени файла. Итак, вы видите здесь пять десятков вопросов, рекомендующих вместо этого xargs -0 или xargs -d'\n'. Но если вы хотите, чтобы xargs обрабатывал строки в кавычках, вам нужно отправить кавычки без экранирования.

Другая проблема заключается в том, что ваш тестовый сценарий использует $*. Без кавычек это разделит все аргументы на пробелы и выполнит подстановку результирующих слов. (С кавычками это приведет к объединению аргументов в одну строку.) Вместо этого почти всегда нужно использовать "$@". Или вот просто:

for i do
  echo "$i"
done

или даже:

printf '%s\n' "$@"

Итак, проверьте экранирование кавычек и используйте "$@" вместо $*.

$ cat args.sh 
for x in "$@" ; do echo ":$x" ; done

$ echo "aa 'bb cc' \"dd ee\""
aa 'bb cc' "dd ee"

$ echo "aa 'bb cc' \"dd ee\"" | xargs ./args.sh 
:aa
:bb cc
:dd ee
1
18.02.2017, 17:41
1 ответ

Вы должны предоставить -lcurl для связывания двоичного файла. В вашей командной строке make параметризована команда make, а не подкоманда связывания.

Вы должны проверить сценарии сборки. Проверяя источник, мы можем увидеть старый источник с помощью gnu autoconf. Используйте префикс

LDFLAGS=-lcurl

для ./configure для создания более правильных make-файлов на этапе настройки.

Обратите внимание, в вашем сообщении об ошибке говорится, что не только libcurl, но и другие библиотеки отсутствуют (libusb, некоторые библиотеки шифрования и т. Д.).

Примечание №2: Такие проблемы в большинстве случаев вызваны не флагами компоновщика, а тем, что необходимые пакеты разработки недоступны в вашей системе. Вот почему ./configure полностью отключает завиток. В этом случае установите их. В Debian это можно сделать с помощью команды

apt-get install libcurl-dev

. Затем перезапустите настройку.

Примечание №3: скажите свой дистрибутив и скопируйте и вставьте весь вывод ./configure, это позволит мне расширить этот ответ до легко читаемого.

Решение состоит не в уменьшении потребления соли, а в увеличении потребления воды. Если ваши почки работают нормально, вы можете доверить им выбрать то, что хочет ваше тело. Если это не так, сделайте то, что вам говорит врач.

0
28.01.2020, 01:00

Теги

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