Como as variáveis do shell dentro de uma string entre aspas simples, elas não serão expandidas. Não importa que a string entre aspas simples inclua aspas duplas dentro dela, ainda é uma string entre aspas simples.
Use em vez disso:
grep -a volume somefile | awk "/^$time1/,/^$time2/ {print}"
Na verdade, como print
é a ação padrão , é possível simplificar isso para:
grep -a volume somefile | awk "/^$time1/,/^$time2/"
Você precisa ter cuidado com essa abordagem. Você deve certificar-se de que nem time1
nem time2
contenham caracteres ativas não intencionais.
Uma abordagem mais segura é transferir as variáveis do shell para variáveis awk:
grep -a volume somefile | awk -v t1="$time1" -v t2="$time2" '($0~"^"t1),($0~"^"t2)'
Observe que, mesmo nessa abordagem mais segura, como observa Gilles nos comentários, você ainda deve tomar cuidado: se as strings em time1
e time2
contiverem os caracteres ^*+.?\[|{$
, as strings serão interpretadas como expressões regulares. Isso não é um problema para as strings mostradas na pergunta (elas não contêm caracteres regex-ativos), mas, se outras strings lhe dessem resultados surpreendentes, esta é uma causa provável.