
Eu crio test.sh para ler um arquivo com conteúdo
item1:return1
item2:return2
...
item10:return10
conteúdo test.sh
VAR1=$1
VAR2= `grep "^${VAR1}:" /home/path/file | awk '{print $2;}'`
echo "${VAR2}";
teste de corrida
sh test.sh item1
retornar
: not found test.sh:
: not found test.sh:
Quando executo o mesmo no Centos. retornar
return1
O que há de errado com o comando awk?
Responder1
Não há nada de errado com o comando awk. Seu problema test.sh
não pode ser encontrado, conforme mostra a mensagem. O CentOS provavelmente define seu caminho para a variável PATH.
Execute-o como sh ./test.sh item1
(presumo que test.sh esteja em seu diretório atual)
Editar: eu deveria ter prestado mais atenção ao script, :
no grep é o problema Isso funciona
VAR1=$1
VAR2=`grep "${VAR1}\:" file | awk '{print $2}'`
echo "${VAR2}";
Porém, o awk por padrão não reconhece :
como separador, tive que usar
item1: return1
item2: return2
Não tenho ideia de como poderia funcionar no servidor ou no centos sem essa mudança