2013-07-27 2 views
2

Я хочу хранить в переменных строках команды Баша:Добавить символ «» в строку

 
find /Users/memmaker6501/Desktop/ -name "*\[*\]*" -type d >> busqueda.txt 

Но я получил сообщение об ошибке с последовательностью \]

Существует способ хранить \] в строке?

+0

@YuHao Как я понимаю, он хочет сохранить эту команду в качестве строкой std :: C++ или 'const char *'. –

+0

@NikosC Это все еще не гарантирует тег [tag: C++]. –

+0

@ColeJohnson Я думаю, что это так, потому что речь идет о том, как избежать цитат в C++, а не в bash. Ну, по крайней мере, так я понял вопрос :-) –

ответ

4

Поместите a \ перед вашими специальными символами. Как это "find /Users/memmaker6501/Desktop/ -name \"*\\[*\\]*\" -type d >> busqueda.txt"

+0

Это спасает мой день. Благодарю. –

+0

Рад я мог помочь :) –

4

Обратных косые и двойные кавычки должны быть экранированы с обратными косыми чертами, например, так:

"find /Users/memmaker6501/Desktop/ -name \"*\\[*\\]*\" -type d >> busqueda.txt" 

Escape sequences in C++ strings:

Escape 
sequence Description      Representation 

\'   single quote     byte 0x27 
\"   double quote     byte 0x22 
\?   question mark     byte 0x3f 
\\   backslash      byte 0x5c 
\0   null character     byte 0x00 
\a   audible bell     byte 0x07 
\b   backspace      byte 0x08 
\f   form feed - new page   byte 0x0c 
\n   line feed - new line   byte 0x0a 
\r   carriage return     byte 0x0d 
\t   horizontal tab     byte 0x09 
\v   vertical tab     byte 0x0b 
\nnn  arbitrary octal value   byte nnn 
\xnn  arbitrary hexadecimal value  byte nn 
\unnnn  arbitrary Unicode value.  code point U+nnnn 
\Unnnnnnnn arbitrary Unicode value.  code point U+nnnnnnnn 
3

C++ 11 имеет сырые строковые литералы для упрощения создания сложных строковых выражений ,

R"***(find /Users/memmaker6501/Desktop/ -name "*\[*\]*" -type d >> busqueda.txt)***" 
+0

Спасибо за информацию. –

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