He buscado por todas partes. Probé eco e impresión. Intenté comillas simples y dobles. Pero analicé los datos y los asigné a una variable y me gustaría evaluarlos si hay una variable dentro de ellos. Luego reemplazaré la variable con un comodín y buscaré el archivo.
Ejemplo:
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
Aquí está al menos uno de mis muchos fracasos:
PROMPT> file=blah.$DATE
PROMPT> test=$(echo "$file"|grep '\$')
PROMPT> echo $test
PROMPT>
PROMPT>
Sé que tiene algo que ver con la expansión, pero no tengo idea de cómo resolverlo. Cualquier ayuda sería apreciada. ¡Gracias!
$date
? Para ese uso:var='file.$DATE.txt'
. Para ampliar la fecha cuando se usa var? Estoy seguro de que necesita explicar lo que está preguntando.sed 's/\${*[a-zA-Z0-9_%]*}*/\*/'
Respuestas:
Si necesita
$date
dentro de la variable var:Eso mantendrá el $ dentro de la variable:
fuente
Use comillas simples alrededor de las variables para evitar la expansión del shell. El ejemplo
echo '$file'
no se expandirá$file
.Editar después del comentario a continuación:
Puede escapar del
$
signo int lavar
variable convar="file.\$DATE.txt"
.fuente