GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann man bei der Verwendung von printf Sonderzeichen im Shell-Skript maskieren?

Für die Leute, die hierher gekommen sind, indem sie auf das erste Suchergebnis geklickt haben, nachdem sie „bash printf escaped“ gegoogelt haben, ist die korrekte Verwendung von printf zum Generieren von Bash-escaped Text:

printf " %q" "here is" "a few\n" "tests"

Welche Ausgaben (ohne nachgestellten Zeilenumbruch):

 here\ is a\ few\\n tests

Versuchen Sie es

printf "%s\n" "$string"

Siehe printf(1)


Sie können $' ' verwenden um die Zeilenumbrüche und Tabulatorzeichen einzuschließen, dann ein einfaches echo genügt:

#!/bin/bash 

get_lines() {    
   local string
   string+='The path to K:\Users\ca, this is good'
   string+=$'\n'
   string+='The second line'
   string+=$'\t'
   string+='123'
   string+=$'\n'
   string+='It also has to be 100% nice than %99'

   echo "$string"
}

get_lines

Ich habe auch ein paar andere kleinere Änderungen an Ihrem Skript vorgenommen. Neben der Kleinschreibung von FUNCTION_NAME habe ich auch die kompatiblere Funktionssyntax verwendet. In diesem Fall gibt es keinen großen Vorteil (da $' ' Strings sind ohnehin eine Bash-Erweiterung), aber es gibt keinen Grund, die function func() zu verwenden Syntax soweit ich weiß. Auch der Geltungsbereich von string kann auch lokal für die Funktion sein, in der es verwendet wird, also habe ich das auch geändert.

Ausgabe:

The path to K:\Users\ca, this is good
The second line 123
It also has to be 100% nice than %99

Darf ich anmerken, dass "man printf" deutlich zeigt, dass ein "%"-Zeichen durch ein weiteres "%" maskiert werden muss, so dass printf "%%" ein einzelnes "%" ergibt


Linux
  1. Wie entkomme ich Zitaten in der Shell?

  2. Wie erstelle ich eine temporäre Datei im Shell-Skript?

  3. Wie führe ich Befehle in Gnuplot mit Shell-Skript aus?

  4. Wie schreibe ich Nicht-ASCII-Zeichen mit Echo?

  5. Sonderzeichen in Unix anzeigen, während der Befehl „less“ verwendet wird

So identifizieren Sie Arbeitsverzeichnisse mithilfe von Shell-Zeichen und Variablen

So verwenden Sie Variablen in Shell-Skripten

So erstellen Sie Shell-Skripte

Wie behandelt man Schalter in einem Shell-Skript?

So legen Sie eine systemweite Proxy-Adresse mit Shell-Skript fest

Wie führe ich einen Befehl in einem Shell-Skript aus?