Während der Verwendung von printf, wie spezielle escape-Zeichen, die in shell-Skript?
Ich versuche, das format ist eine Zeichenfolge mit der printf
in der Schale, ich werde den input-string aus einer Datei , die Sonderzeichen wie %,',"",,\user, \tan
etc.
Wie die Flucht der speziellen Zeichen, die im input-string ?
ZB
#!/bin/bash
#
string='';
function GET_LINES() {
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";
printf "$string";
}
GET_LINES;
ich bin davon ausgegangen, dass es gedruckt wird, in das format, das ich gerne
The path to K:\Users\ca, this is good
The second line 123
It also has to be 100% nice than %99
Aber seine Angabe unerwartete bringt
./script: line 14: printf: missing unicode digit for \U
The path to K:\Users\ca, this is good
The second line 123
./script: line 14: printf: `%99': missing format character
It also has to be 100ice than
Also, wie kann ich loswerden der Sonderzeichen, die beim drucken kann.? echo -e
hat auch das Problem.
- Die Möglichkeit
%
wird in einem parameter ist genau der Grund, warum Sie sollten nie erweitern Sie einen parameter in das erste argumentprintf
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
$' '
zu umschließen, die Zeilenumbrüche und Tabulatorzeichen, dann eine Ebeneecho
ausreichen:Ich habe auch ein paar andere kleinere änderungen an Ihrem Skript. Sowie Ihre FUNKTIONSNAME in Kleinbuchstaben, ich habe auch die meisten kompatiblen Funktion syntax. In diesem Fall gibt es nicht viel Vorteil (wie
$' '
Saiten sind eine bash-Erweiterung sowieso), aber es gibt keinen Grund, diefunction func()
syntax wie weit ich bin bewusst. Auch der Umfang derstring
kann genauso gut in der Funktion lokal in dem es verwendet wird, also änderte ich das auch.Ausgabe:
Versuchen
Sehen printf(1)
The path to K:\Users\ca, this is good\nThe second line\t123\nIt also has to be 100% nice than %99