Bash: arquivo de leitura que contém uma estrela (*)

1

Eu devo ler o conteúdo de um arquivo em uma variável. Fazer o seguinte é ótimo:

content1=$(<content-1.html)

No entanto, se esse arquivo contiver uma estrela (*), em vez de lê-lo corretamente, ele será substituído pela lista de arquivos no diretório de trabalho.

Então, se o arquivo contiver o seguinte:

var randomFirst = (Math.floor( Math.random() * (items.length) ) );

A leitura é a seguinte:

 var randomFirst = (Math.floor( Math.random() backups compile.sh content css favicon.ico img libs output template.html template_compiled.html (items.length) ) );

Como devo ler o arquivo para garantir que os caracteres especiais não sejam interpretados?

Obrigado,

    
por Jem 24.06.2014 / 23:24

1 resposta

3

A resposta simples é usar aspas duplas: -

content1="$(<content-1.html)"
echo "$content1"

As aspas duplas permitem a expansão de variáveis, mas não de máscaras de arquivo. As cotações não aparecem na expansão. Por isso, sempre use aspas duplas ao fazer referência a content1 .

Na verdade, a primeira instrução não precisa estritamente das aspas duplas, já que o bash não verifica novamente uma linha de entrada, mas não causa danos.

Portanto, seu problema não é ler o arquivo, mas como você usa seu conteúdo.

    
por 25.06.2014 / 02:10

Tags