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!
$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.sed 's/\${*[a-zA-Z0-9_%]*}*/\*/'
Antworten:
Wenn Sie
$date
innerhalb der Variablen var benötigen :Dadurch bleibt das $ in der Variablen:
quelle
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 dervar
Variablen mit maskierenvar="file.\$DATE.txt"
.quelle