2013-08-15 1 views
2

Кто-нибудь знает wordexp() поведение со строками, содержащее '|' или '&'.Wordexp behavour with &

Я использую wordexp(str, &res, WRDE_UNDEF), но со всеми строками, которые содержали '|' или '&'wordexp() возвращается WRDE_BADCHAR. Я хочу, чтобы wordexp() не сообщил об этом.

E.g. Я хочу, чтобы wordexp("a & b", &res, WRDE_UNDEF)wordexp_t с 3 строками "a" "&" "b".

ответ

3

Запрещенные символы (newline или |, &, ;, <, >, (, ), {, }) должны быть экранированы. Это делается путем префикса их \.

дословное от man wordexp:

Строка аргумент

Поскольку разложение такой же, как расширение с помощью оболочки (см ш (1)) параметров к команде, строка s не должна содержать символы, которые были бы незаконными в параметрах командной оболочки. В частности, для не должно быть никакой незаменимой строки новой строки или |, &,;, <,>, (,), {,} символов вне контекста подстановки команд или подстановки параметров.

Смежные вопросы