Befehlsersetzung: cat mit ausführbarem Inhalt

Befehlsersetzung: cat mit ausführbarem Inhalt

Ich habe eine Datei mit dem Namen testund 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 testfü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 **

verwandte Informationen