/ / Warum kann bash den Inhalt dieser Datei nicht einer Variablen zuordnen? - Bash, Ubuntu, Sed

Warum kann bash den Inhalt dieser Datei nicht einer Variablen zuordnen? - Bash, Ubuntu, Sed

Datei: test.txt (ja, nur diese 4 Zeichen)

@(:/

Bash-Skriptdatei: test.sh

#!/bin/bash
# Get the entire content
content=`cat ./test.txt`
echo $content

Ich benutze diese Version von bash unter Ubuntu (das funktioniert gut unter OS X, aber ich brauche es unter Ubuntu)

Bash-Version:

vagrant@vagrant-ubuntu-trusty-64:/vagrant$ bash --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

Ubuntu-Version:

Linux vagrant-ubuntu-trusty-64 3.13.0-66-generic #108-Ubuntu SMP Wed Oct 7 15:20:27 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Es nervt höllisch, weil bash einfach hängen bleibt und nie endet. Wirklich neugierig, ob es Regeln gibt, die ich für bestimmte Versionen von Bash einfach nicht kenne.

Auch wenn Sie nicht die exakt gleiche Version habenund es funktioniert gut für Sie, bitte nicht posten und sagen "Es hat gut für mich gearbeitet." Der Sinn dieses Post ist nicht zu hören, wie gut es für Sie unter völlig anderen Umständen funktioniert. Der Punkt ist zu verstehen, warum es nicht "Arbeiten Sie unter diesen ganz bestimmten Umständen.

Antworten:

1 für die Antwort № 1

Danke für all die tollen Kommentare. Obwohl ich den Grund für das Problem immer noch nicht kenne, ist es ziemlich klar, dass es wichtig ist, Bash-Variablen zu zitieren, wenn sie unerwartete Textkombinationen enthalten könnten. In diesem Fall funktionierte die Lösung von @tripleee richtig.

Richtig funktionierendes Skript:

#!/bin/bash
# Get the entire content
content=$(cat ./test.txt)
echo "$content"