Wenn ich echo $something >> file.txt
, wird eine neue Zeile an die Datei angehängt.
Was ist, wenn ich ohne neue Zeile anhängen möchte?
bash
redirection
onemach
quelle
quelle
echo $something
, sein Verhalten hängt von derIFS
Variablen ab, und Sie könnten mit verschwindendem Charakter enden. Sie können Folgendes versuchen:var="hello world"; echo $var
(zwei Leerzeichen zwischen Hallo und Welt) odervar="hello world"; IFS='l'; echo $var
odervar="-e hello \\n world"; echo $var
. Um dies zu lösen, setzen Sie die Variable in doppelte Anführungszeichen:echo "$var"
oder verwenden Sieprintf
.Antworten:
Dafür
echo -n
ist es da.quelle
cat
? (zB wenn Sie eine Dateisomething.txt
anstatt einer Variablen haben$something
)printf
ist sehr flexibel und portabler alsecho
. Wenn Sie wie bei den C / Perl / etc-Implementierungen die\n
Formatzeichenfolge nicht mit beenden, wird kein Zeilenumbruch ausgegeben:quelle
Wenn Sie die Ausgabe des Befehls verwenden, können Sie xargs in Kombination mit echo verwenden
quelle
tr
ist eine andere Alternative.Wenn Sie
echo
als Ihre Eingabe verwenden, können Sie davonkommen, welchetr -d '\n'
.Diese Technik funktioniert auch, wenn die Ausgabe von anderen Befehlen weitergeleitet wird (mit nur einer einzigen Ausgabezeile). Wenn Sie nicht wissen, ob die Dateien UNIX- oder DOS-Zeilenenden haben, können Sie diese verwenden
tr -d '\n\r'
.Hier sind einige Tests, die zeigen, dass dies funktioniert.
Newline enthalten:
UNIX Newline:
DOS-Stil:
Getestet mit BSD
tr
und GNUtr
.quelle