lendo entrada em sed

3

Eu sou novo em scripts de shell. Estou aprendendo pouco a pouco. Eu estou mais familiarizado com o PHP, que está trabalhando para minha desvantagem agora.

De qualquer forma, estou escrevendo um script de shell e leio as entradas com o seguinte:

read $foo

Agora eu quero usar essa variável na minha substituição de string sed assim:

sed -i 's/replaceme/$foo' myfile.txt

O que eu estou recebendo, em vez disso, é a substituição literal, não o que $ foo realmente é igual. Em vez disso eu quero que seja a entrada do usuário:

Exemplo:

Usando esta linha ( read $foo ). Digamos que eu digite 'bar'. Assim, $ foo = 'bar' da entrada do usuário.

Saída atual: $foo

Saída desejada bar

Espero que isso faça sentido.

    
por chrisjlee 11.07.2011 / 21:16

1 resposta

2

A resposta curta: use aspas duplas em vez de aspas simples.

As aspas simples evitam expandir as variáveis do shell, enquanto as aspas duplas não.

Para obter mais detalhes, consulte link

Os detalhes completos estão incluídos na documentação do seu shell, e há alguma variação entre os diferentes shells, mas o básico é o mesmo em quase todos os shell do estilo Unix.

    
por 11.07.2011 / 21:34