Ich möchte eine neue Zeile in eine Datei zwischen Variablen in einem Shell-Skript einfügen. Hier ist mein Code:
var1 = "Hallo" var2 = "Welt!" logwrite = "$ var1 [Hier möchte ich eine neue Zeile einfügen] $ var2 Geben Sie "$ logwrite" >> /Users/username/Desktop/user.txt als Echo ein
Im Moment, wenn ich mein Skript ausführe, zeigt die Datei user.txt Folgendes:
Hallo Welt!
Ich möchte, dass es zeigt:
Hallo Welt!
Wie mache ich das??
EDIT: Hier ist mein Shell-Skript:
echo -n "Wie lautet Ihr Vorname?" zuerst lesen echo -n "Wie ist dein Nachname?" zuletzt gelesen echo -n "Wie lautet Ihr zweiter Vorname?" Lesen Sie in der Mitte echo -n "Was ist dein Geburtstag?" Geburtstag lesen echo -e "Vorname: $ first / nLast Name: $ last / nMiddle Name: $ middle / nGeburtstag: $ birthday" >> /Users/matthewdavies/Desktop/user.txt qlmanage -p "~ / Desktop / user.txt"
shell
shell-script
echo
Daviesgeek
quelle
quelle
printf "%s\n" $var1 $var2 >> file
?Antworten:
Erläuterung:
Die
\n
Escape-Sequenz zeigt einen Zeilenvorschub an. Wenn Sie das-e
Argument an echo übergeben, können Sie die Escape-Sequenzen interpretieren.Es kann sogar noch weiter vereinfacht werden:
oder auch:
quelle
\n
anstatt/n
sollte den Trick machen :)-e
Flag nicht.oder eigentlich brauchst du keine vars:
Es gibt ein Problem mit der Antwort von John T. Wenn einer der Vars den String \ n (oder eine andere Sequenz wie \ t) hatte, werden sie übersetzt. man kann etwas ähnliches wie seine Antwort mit printf bekommen:
auch hmm. Ich sehe, dass Sie die Antwort in eine Variable $ logwrite komponieren. Wenn dies die einzige Verwendung dieser Variablen ist, erscheint sie sinnlos.
Ich denke, ein Here-Doc könnte besser lesbar sein, insbesondere wenn Sie viele Zeilen an das Protokoll anhängen müssen:
(Dieses Wort, EOF, ist ein Trennzeichen, das Sie auswählen können. Es kann ein beliebiges Wort sein.)
Beachten Sie, dass der Heredoc $ -Variablen wie doppelte Anführungszeichen erweitert. wenn du das nicht willst, zitierst du den Heredoc, wie << "EOF"
quelle
\n
, daher habe ich die Antwort geliefert. Die "Was wäre, wenn" -Methode würde jede Frage auf dieser Website in eine endlose Diskussion führen. Wenn er zu dieser Straße kommt, kann er eine andere Frage stellen :)printf
. Es ist POSIX: stackoverflow.com/a/34947759/895245