por favor, explique abaixo o comando

0
getDateFormat() {
  year='echo $1 | awk -F"-" '{print $2}''
  mm='echo $1 | awk -F"-" '{print $3}''
  i=1
  for x in January February march april may july jun august September October November December
  do
    if [ $mm -eq $ii ]; then
      month="$x"
      break
    fi
    ii='expr $ii + 1'
  done
  mday='echo $1 | awk -F"_" '{print $1}' | awk -F"-" '{print $4}''
  tmp_date="${mday}_${month}_$year
}

Eu sou iniciante em scripts de shell. Eu gostaria de saber o que a função acima faz?

$ awk '$2 == "1" { print $0 }' cols.txt 

Quando a correspondência ocorrer, imprima a linha inteira. Mas o que este comando retorna

echo $1 | awk -F"-" '{print $2}'

$ii - O que é isso?

i=1;
echo $ii 

Não imprimiu nada.

    
por Shivashankari Sekar 16.06.2017 / 16:41

1 resposta

1

$1 é o primeiro parâmetro posicional , ou seja, argumento para a função. awk -F- define awk s separador de campo para um traço e print $2 imprime o segundo campo. Então, de aa-bb-cc , você obteria bb .

Presumivelmente, a função espera ser chamada como getDateFormat something-2017-06 , o que parece estranho, mas o ano é escolhido a partir do segundo campo separado por traço.

$ii refere-se a uma variável, mas ela não está definida antes do teste if [ $mm -eq $ii ]; , de modo que o teste veja [ 123 -eq ] (com 123 provavelmente algum número selecionado de $1 ). Isso causa um erro, pois o operador -eq está ausente do outro operando.

    
por 16.06.2017 / 17:21