Atribua o nome do host a uma variável no ksh

0

Estou tentando atribuir a saída de hostname a uma variável e usá-la no meu script. Embora eu tenha conseguido colocar a variável em outra lógica, quando tento imprimir a variável, ela não imprime a variável.

Aqui está o que estou procurando fazer:

o hostname no servidor retorna xy29abcd01 .

Eu quero atribuir isso a uma variável e usá-la para remover os terceiro e quarto caracteres do nome do host e atribuí-los a outra variável.

Aqui está o que eu tenho

#!/bin/ksh

print " Get queue manager name"
SERVER="echo 'hostname'"
print"$SERVER"
export QMGR='$SERVER |cut -c1-2,5-10| tr [[:lower:]] [[:upper:]'

print "Queue manager name $QMGR"

E aqui está a saída Quando eu executo isso:

Get queue manager name
./test.sh[13]: printecho xy29abcd01: not found [No such file or directory]
Queue manager name XYABCD01

O que estou fazendo errado aqui para atribuir a variável SERVER. Saída desejada

xy29abcd01
Queue manager name XYABCD01
    
por MO12 11.07.2016 / 08:42

1 resposta

4

Seu script tem alguns problemas:

  1. O erro deriva da linha export . Você está usando $SERVER como um comando e este comando não pode ser encontrado. O que você gostaria de fazer é alimentar a string em cut :

    print $SERVER | cut -c1-2,5-10 | ...
    
  2. A linha SERVER="echo 'hostname'" é melhor escrita

    SERVER=$(hostname)
    
  3. O utilitário tr usa intervalos de caracteres, portanto, não é necessário incluir [:upper:] ou [:lower:] em [ ... ] . No entanto, coloque-os entre aspas:

    tr '[:lower:]' '[:upper:]'
    

    É um bom hábito para o dia em que você deseja usar tr para coisas como * que o shell estará tratando como um padrão de globbing.

  4. Em geral, use $( ... ) em vez de backticks. Torna o código mais legível, aninha-se mais facilmente e é melhor de muitas outras formas .

por 11.07.2016 / 09:45