Wie erhalte ich den formatierten Text, als würde ich einen String direkt übergeben?

Wie erhalte ich den formatierten Text, als würde ich einen String direkt übergeben?

direkte Übergabe eines Strings mit $anecho

$ echo $'#include <iostream>\nint main() {\n  std::cout << \"Hello World!\" << std::endl;\n}'

erweitert die eingebetteten ANSI-Escapesequenzen

#include <iostream>
int main() {
  std::cout << "Hello World!" << std::endl;
}

Ich habe den String einer Variablen zugewiesen

codeStr='#include <iostream>\nint main() {\n  std::cout << \"Hello World!\" << std::endl;\n}'

und dann die Variable echoen

echo $codeStr

Ich habe die Rohzeichenfolge und keinen formatierten Text erhalten.

Wie erhalte ich den formatierten Text, als würde ich einen String direkt übergeben?

Antwort1

Verwenden-ewechseln zuenable interpretation of backslash escapes.

$ codeStr='#include <iostream>\nint main() {\n  std::cout << \"Hello World!\" << std::endl;\n}'
$ echo -e $codeStr 
#include <iostream>
int main() {
 std::cout << \"Hello World!\" << std::endl;
}

Das Adressieren des Kommentars @steeldriver printffunktioniert auch (und interpretiert die Sequenz korrekt).

$ codeStr='#include <iostream>\nint main() {\n  std::cout << \"Hello World!\" << std::endl;\n}'
$ printf "$codeStr"
#include <iostream>
int main() {
  std::cout << "Hello World!" << std::endl;
}

verwandte Informationen