/ / Como posso evitar um erro de "não correspondência" neste script de shell C? - csh

Como posso evitar um erro “no match” neste script de shell C? - csh

Considere o seguinte shell script C:

set MYVAR = "a="str.*" -p -10"
set output = `echo "$MYVAR" | sed "s/-p -[0-9]+/-p -100/g"`
echo "$output"

Quando originado do shell, recebo o erro echo: no match. Quais alterações posso fazer no script para evitar o erro? Eu tentei adicionar ": q" e usando um forro Perl, mas não encontrei uma solução elegante.

Respostas:

0 para resposta № 1

Isso é complicado porque você tem os dois ".* "{o que faria glob para arquivos} e uma aspa simples em MYVAR {o que significa que você não pode usar o" para interpretar literalmente} O melhor que posso pensar aqui é substituir as aspas duplas em MYVAR por aspas simples, caso em que tudo deve funcionar. Sua linha sed não funciona. Mas esse não é o problema. Eu substituí o sed para imitar o que eu acho que você está tentando fazer.

Assim:

- set MYVAR = "a="str.*" -p -10"
- echo $MYVAR
echo: No match. #as expected because you need to put it in double quotes
- echo "$MYVAR"
a="str.*" -p -10
- set output = `echo "$MYVAR" | sed "s/-p -10/-p -100/g"`
- echo $output
echo: No match. #Reason same as before
- echo "$output"
a="str.*" -p -100