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
Вы должны предоставить -lcurl для связывания двоичного файла. В вашей командной строке make параметризована команда make, а не подкоманда связывания.
Вы должны проверить сценарии сборки. Проверяя источник, мы можем увидеть старый источник с помощью gnu autoconf. Используйте префикс
LDFLAGS=-lcurl
для ./configure для создания более правильных make-файлов на этапе настройки.
Обратите внимание, в вашем сообщении об ошибке говорится, что не только libcurl, но и другие библиотеки отсутствуют (libusb, некоторые библиотеки шифрования и т. Д.).
Примечание №2: Такие проблемы в большинстве случаев вызваны не флагами компоновщика, а тем, что необходимые пакеты разработки недоступны в вашей системе. Вот почему ./configure полностью отключает завиток. В этом случае установите их. В Debian это можно сделать с помощью команды
apt-get install libcurl-dev
. Затем перезапустите настройку.
Примечание №3: скажите свой дистрибутив и скопируйте и вставьте весь вывод ./configure, это позволит мне расширить этот ответ до легко читаемого.
Решение состоит не в уменьшении потребления соли, а в увеличении потребления воды. Если ваши почки работают нормально, вы можете доверить им выбрать то, что хочет ваше тело. Если это не так, сделайте то, что вам говорит врач.