Echo einer Zeichenfolge mit einer Variablen darin, ohne sie zu erweitern / auszuwerten [geschlossen]


11

Ich habe überall gesucht. Versucht Echo und drucken. Versuchte einfache und doppelte Anführungszeichen. Aber ich habe Daten analysiert und einer Variablen zugewiesen und möchte sie dann auswerten, wenn sich eine Variable darin befindet. Ich werde dann die Variable durch einen Platzhalter ersetzen und nach der Datei suchen.

Beispiel:

var="file.$DATE.txt"

### Where it goes wrong-  Needs to identify that $DATE is within the $var varaible.
test=$(echo "$var"|grep '\$')
if [[ $test ]]
then
    ### I would use whatever fix is discovered here as well
    test=$(echo $test|sed 's/\$[a-zA-Z]*/\*/')
fi

### (Actually pulling from remote machine to local)
cat $test > /tmp/temporary.file

Hier ist mindestens einer meiner vielen Fehler:

PROMPT> file=blah.$DATE
PROMPT> test=$(echo "$file"|grep '\$')
PROMPT> echo $test
PROMPT>
PROMPT>

Ich weiß, dass es etwas mit Expansion zu tun hat, habe aber keine Ahnung, wie ich es herausfinden soll. Jede Hilfe wäre dankbar. Vielen Dank!


Was müssen Sie lösen? Diese var enthält eine nicht erweiterte $date?. Für diesen Zweck : var='file.$DATE.txt'. Datum erweitern, wenn var verwendet wird? Ich bin sicher, dass Sie erklären müssen, was Sie fragen.

Entschuldigung, um zu testen, ob eine Variable in der Variablen "var" definiert ist. Verschachtelt.
krmarshall87

Ich habe einen Weg gefunden, um mein Dilemma sed 's/\${*[a-zA-Z0-9_%]*}*/\*/'
ausgetauscht habe

Antworten:


19

Wenn Sie $dateinnerhalb der Variablen var benötigen :

var='file.$date.txt'

Dadurch bleibt das $ in der Variablen:

$ echo "$var" | grep '\$'
file.$date.txt

8

Verwenden Sie einfache Anführungszeichen um Variablen, um eine Shell-Erweiterung zu verhindern. Beispiel echo '$file'wird nicht erweitert $file.

Nach Kommentar unten bearbeiten:

Sie können das $Vorzeichen in der varVariablen mit maskieren var="file.\$DATE.txt".


Ich brauche es zu erweitern, aber nur eine Ebene. Ich habe vergessen, Schritt für Schritt das gewünschte Ergebnis hinzuzufügen. Ich möchte jedoch, dass der Inhalt der $ -Datei für ein Dollarzeichen ($ DATE) ausgewertet wird.
krmarshall87

Bearbeitet, um das zu lösen.
Munir

Ich erhalte diese Daten von einer externen Quelle. Selbst um das $ durch ein \ $ zu ersetzen, würde ich ein Echo benötigen. Lassen Sie mich jedoch sehen, ob ich es beim Parsen
einpressen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.