Ich möchte einen String wie diesen in Bash anzeigen
I'm a student
Natürlich können Sie es so machen
echo "I'm a student"
Aber wie kann dies erreicht werden, während ein einfaches Anführungszeichen um die Zeichenfolge verwendet wird?
Ich möchte einen String wie diesen in Bash anzeigen
I'm a student
Natürlich können Sie es so machen
echo "I'm a student"
Aber wie kann dies erreicht werden, während ein einfaches Anführungszeichen um die Zeichenfolge verwendet wird?
su -c '/etc/init.d/myservice start' -l myuser(von root geführt)
Antworten:
echo 'I\'m a student'
funktioniert nicht. Aber folgendes funktioniert:
echo $'I\'m a student'
Aus der Manpage von bash:
Ein einfaches Anführungszeichen darf nicht zwischen einfachen Anführungszeichen stehen, selbst wenn ein Backslash vorangestellt ist.
....
Wörter der Form $ 'string' werden speziell behandelt. Das Wort wird zu Zeichenfolge erweitert, wobei Zeichen mit Backslash-Escapezeichen gemäß ANSI C-Standard ersetzt werden.
echo $'I\'m a student!'=> !': event not found, dies ist keine echte Zeichenfolge in einfachen Anführungszeichen, die in Bash vor jeder Interpretation schützen sollte.
$ bash --version GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15) Copyright (C) 2007 Free Software Foundation, Inc.
Die von Glenn Jackman erwähnte "hässliche" Lösung sollte eigentlich als Antwort auf höchster Ebene aufgeführt werden. Es funktioniert gut und ist in manchen Situationen sogar schön.
'I'"'"'m a student'
Dies beendet die Zeichenfolge in einfachen Anführungszeichen, nachdem Isofort eine Zeichenfolge in doppelten Anführungszeichen mit einem einfachen Anführungszeichen und dann eine weitere Zeichenfolge in einfachen Anführungszeichen gestartet wird. Bash verkettet dann alle zusammenhängenden Zeichenfolgen zu einer.
Schön!
$nicht unbedingt "+ n" Kapazität hat. Ich bin mir nicht sicher, ob ich mehr testen muss. aber es sieht für mich so aus, als ob ich Code ausführen kann, der bereits in einfachen Anführungszeichen in separaten Variablen gespeichert war.
Das folgende Beispiel funktioniert, weil das maskierte einfache Anführungszeichen \'technisch zwischen zwei Argumenten in einfachen Anführungszeichen liegt
echo 'I'\''m a student'
3.1.2.2 Single Quotes