J'ai cherché partout. Écho et impression essayés. J'ai essayé des guillemets simples et doubles. Mais j'ai analysé des données et les ai attribuées à une variable et je voudrais ensuite l'évaluer s'il y a une variable en elle. Je vais ensuite remplacer la variable par un caractère générique et rechercher le fichier.
Exemple:
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
Voici au moins un de mes nombreux échecs:
PROMPT> file=blah.$DATE
PROMPT> test=$(echo "$file"|grep '\$')
PROMPT> echo $test
PROMPT>
PROMPT>
Je sais que cela a quelque chose à voir avec l'expansion, mais je ne sais pas comment le régler. Toute aide serait appréciée. Merci!
$date
. Pour cette utilisation:var='file.$DATE.txt'
. Pour augmenter la date lorsque var est utilisé? Je suis sûr que vous devez expliquer ce que vous demandez.sed 's/\${*[a-zA-Z0-9_%]*}*/\*/'
Réponses:
Si vous avez besoin
$date
à l'intérieur de la variable var:Cela gardera le $ à l'intérieur de la variable:
la source
Utilisez des guillemets simples autour des variables pour empêcher l'expansion du shell. L'exemple
echo '$file'
ne se développera pas$file
.Modifier après le commentaire ci-dessous:
Vous pouvez échapper le
$
signe dans lavar
variable avecvar="file.\$DATE.txt"
.la source