Variável baseando-se em uma função

0

Eu defini uma função auxiliar curta em um script bash. Para legibilidade, gostaria de substituir os cabeçalhos padrão com uma variável declarada fora da função.

Eu tentei citar a declaração de muitas maneiras diferentes, mas nada está funcionando.

Eu quero substituir isso

put() {
  local response=$(curl -H 'Content-Type: application/json' -H 'Accept: application/vnd.urbanairship+json; version=3;' ...)
  echo $response
}

com algo parecido com isto

headers=???

put() {
  local response=$(curl $headers ...)
  echo $response
}

i.e. $headers deve se expandir para -H 'Content-Type: application/json' -H 'Accept: application/vnd.urbanairship+json; version=3;'

$headers precisa ser expandido para separar palavras para serem passadas corretamente como argumentos, então eu até tentei usar uma matriz.

Nota: eu praticamente desisti. Não vale a pena lutar com um uso tão simples. Neste ponto, a questão é de edificação.

    
por Hod 14.02.2017 / 02:56

1 resposta

0

Isso pode ser resolvido usando uma matriz:

headers=( -H 'Content-Type: application/json' 
          -H 'Accept: application/vnd.urbanairship+json; version=3;' )

Você pode usar ${headers[@]} em sua chamada para curl :

curl "${headers[@]}" URL
    
por 09.09.2017 / 13:16