Ошибка swig в ubuntu 16.04

Безопасный список файлов создается с помощью * без кавычек, поиск не используется:

$ echo *

Давайте протестируем несколько файлов:

$ mkdir test-dir; cd test-dir
$ touch clean normal_file 'a%b' 'has two spaces' '*' 'a*b' '?' 'a?b'
$ touch '$' 'a$b' '%' 'a%b' $'new\nline' $'em\u2001quad' 'normal_file'

echo * команда выдаст с указанными выше файлами:

? $ * % a?b a$b a*b a%b clean em quad has two spaces new
line normal_file

Список, разделенный пробелом, который, да, состоит из двух строк, поскольку есть файл с новой строкой в ​​его имени.

Более простой способ увидеть файлы - заключить их имена в кавычки printf '% q' и добавить новую строку, например printf '% q \ n' , мы получим чистый список файлов:

$ printf '%q\n' *
\?
\$
\*
%
a\?b
a\$b
a\*b
a%b
clean
$'em\342\200\201quad'
has\ two\ spaces
$'new\nline'
normal_file

Конечно, вам нужно выбрать некоторые файлы, а не все, как с обычным *.
Итак, мы создаем шаблон из всех символов для соответствия: ? $ *% .
Однако большинство этих символов являются «особыми» и нуждаются в кавычках, когда появляются в некоторых порядках. В частности, если * или ? следует за $ , они расширяются оболочкой, что может создать проблемы.
Обязательно укажите $ .
Тогда простой способ получить все остальные символы в кавычках - это использовать printf '% q'? \ $ *% . Это даст: \? \ $ \ *% . Если обратная косая черта не является строго необходимой, она не вызовет никакого вреда, экранированный символ все равно будет работать.
В этот список нам нужно добавить несколько пустых символов. Но включение новой строки становится серьезной проблемой. Самый простой способ справиться с новой строкой внутри класса символов - использовать [[: space:]] , который будет включать новую строку, пробел, табуляцию и некоторые другие символы пробела в виде длинного тире. .

Таким образом, команда выглядит так:

$ printf '%q\n' *[\?\$\*%[:space:]]*
\?
\$
\*
%
a\?b
a\$b
a\*b
a%b
$'em\342\200\201quad'
has\ two\ spaces
$'new\nline'

Обратите внимание, что имена файлов clean и normal_file не указаны, как требуется.

2
01.02.2018, 20:06
1 ответ
  • Вы можете перейти по этим двум ссылкам, чтобы загрузить и установить pcre. ссылка1 ссылка2

  • После завершения установки pcre :Перейдите к :cd /pcre-8.42/.libs, затем

    sudo mv -v libpcre.so.* /usr/lib/
    

После этого вы сможете использовать swig.

3
27.01.2020, 22:33

Теги

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