Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Return waarde en resultaat opvangen.  (gelezen 2377 keer)

Offline hansvl

  • Lid
Return waarde en resultaat opvangen.
« Gepost op: 2018/11/06, 14:14:35 »
In een Linux shell script wil het IP-adres bepalen van een domein naam.
Ook als als er geen IP-adres kan worden bepaald moet duidelijk worden.

Een mogelijkheid is een tijdelijk file te gebruiken.

  host $HOSTNAME > /tmp/ip-adres
  if [ $? -ne 0 ]
  then
    echo "host: error"
    exit 3
  fi
  IPADD=`cat /tmp/ip-adres | cut -d ' ' -f 4`

Ik gebruik echter liever geen tijdelijke file.
Als de tijdelijke file al bestaat en niet beschrijfbaar is, werkt dit niet.


Een andere mogelijkheid is dat het host commando twee keer wordt aangeroepen.
Een keer om te controleren of het geen fout code terug geeft
en een keer om het IP-adres te bepalen.

  host $HOSTNAME > /dev/null
  if [ $? -ne 0 ]
    then
    echo "host: error"
    exit 3
  fi

  IPADD=`host $HOST | cut -d ' ' -f 4`

Is het mogelijk om in een commando de return waarde en het IP-adres
op te vangen?

Offline Bloom

  • Lid
Re: Return waarde en resultaat opvangen.
« Reactie #1 Gepost op: 2018/11/06, 16:45:54 »
Ja, dat is mogelijk.
Je kunt met de speciale systeemvariabele $PIPESTATUS de statuscode te weten komen van elk element van een pipe, te beginnen vanaf 0.
host $HOSTNAME|cut -d ' ' -f 4
echo "${PIPESTATUS[0]}"
geeft 0 terug als het host-bevel lukt en 1 als dat niet zo is.

Maar er is een eenvoudiger oplossing door de output van de pip meteen in een variabele te zetten:

ip=$(host $HOSTNAME|cut -d ' ' -f 4); if [ "$ip" != "found:" ]; then echo $ip; else echo "host: error"; fi

Offline hansvl

  • Lid
Re: Return waarde en resultaat opvangen.
« Reactie #2 Gepost op: 2018/11/06, 17:26:10 »
Hoi Bloom,

Bedankt voor je snelle en waarde volle reactie.
Ik wist van het bestaat van de systeemvariable PIPESTATUS niet af.

Jouw tweede oplossing had ik zelf moeten kunnen bedenken.
(Er mist een "echo" in de laatste "else" tak van die oplossing.)