Echo uma string com uma variável nela sem expandir / avaliando [closed]

3

Eu pesquisei em todos os lugares. Tentei eco e imprimir. Tentei aspas simples e duplas. Mas eu analisei os dados e os atribui a uma variável e gostaria de avaliá-la se houver uma variável dentro dela. Em seguida, substituirei a variável por um curinga e procure o arquivo.

Exemplo:

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

Aqui está pelo menos um dos meus muitos fracassos:

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

Eu sei que tem algo a ver com a expansão, mas não tenho ideia de como resolvê-lo. Qualquer ajuda seria apreciada. Obrigado!

    
por krmarshall87 28.01.2016 / 19:10

2 respostas

10

Se você precisar de $date dentro da variável var:

var='file.$date.txt'

Isso manterá o $ dentro da variável:

$ echo "$var" | grep '\$'
file.$date.txt
    
por 28.01.2016 / 19:58
5

Use aspas simples ao redor das variáveis para evitar a expansão do shell. O exemplo echo '$file' não expandirá $file .

Editar após comentário abaixo:

Você pode escapar do sinal $ na variável var com var="file.\$DATE.txt" .

    
por 28.01.2016 / 19:15