
Ich habe eine Datei mit dem Namen test
und der Inhalt ist:
ubuntu@regina:~$ cat test
** test **
Das Catting dieser Datei über die Befehlszeile funktioniert einwandfrei, aber wenn ich die Befehlsersetzung verwende, erhalte ich ein verständliches, aber unerwünschtes Ergebnis.
ubuntu@regina:~$ A=$(cat test)
ubuntu@regina:~$ echo $A
deployment detect.sh htpasswd.py logs test uwsgi-1.0.4 uwsgi-1.0.4.tar.gz test deployment detect.sh htpasswd.py logs test uwsgi-1.0.4 uwsgi-1.0.4.tar.gz
Aufgrund der in der Datei vorhandenen Sternchen test
führt es grundsätzlich ein aus echo *
und listet den Verzeichnisinhalt zusammen mit dem Dateiinhalt auf.
Gibt es einen Parameter, den ich an die Befehlsersetzungssyntax übergeben kann, ohne dass dieses Ergebnis zustande kommt, oder gibt es eine andere Ausdrucksweise, die hierfür verwendet werden sollte?
Antwort1
Sie möchten Folgendes tun echo "$A"
. Durch das Einschließen der Variable in Anführungszeichen wird sie zu einer Zeichenfolge.
Beispiel:
[root@talara test]# A=$(<test)
[root@talara test]# echo $A
FILE1 ham test test FILE1 ham test
[root@talara test]# echo "$A"
** test **