ifconfig
retornará um valor numérico de 8 bits quando for concluído (como qualquer processo * nix que saia limpo).
Normalmente zero ( 0
) é usado para indicar sucesso e outro valor é usado para indicar falha. Este código de retorno está disponível como $?
.
ifconfig
também será enviado para stdout
, por exemplo:
eth0 Link encap:Ethernet HWaddr 02:42:ac:14:00:02
inet addr:172.20.0.2 Bcast:172.20.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20430143 errors:0 dropped:0 overruns:0 frame:0
TX packets:20966475 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:46532669457 (46.5 GB) TX bytes:44114090048 (44.1 GB)
Se você estiver tentando determinar se ifconfig eth0
foi bem-sucedido (ou seja, dependendo das permissões, a interface existe), você pode fazer o seguinte:
ifconfig eth0
if [ $? -eq 0 ]; then
echo yay
fi
if ifconfig eth0; then
echo yay
fi
ifconfig eth0 && echo yay
Ocultar a saída de ifconfig
pode ser obtida anexando > /dev/null
:
if ifconfig eth0 > /dev/null; then
echo yay
fi
Você perguntou sobre a impressão do código de retorno, e isso é uma pegadinha para iniciantes ...
Você pode simplesmente fazer isso:
ifconfig eth0
echo $?
Mas depois de chamar echo
, o código de retorno ( $?
) será o código de retorno de echo
, não ifconfig
's ... Para lidar com isso, basta atribuí-lo a uma variável temporária :
ifconfig eth0
RET=$?
echo ${RET}
if [ ${RET} -eq 0 ]; then
echo yay
fi
Observação: [
é um comando interno que pode avaliar expressões, as chaves quadradas ( [
/ ]
) não fazem parte da sintaxe if
:
$ help [
[: [ arg... ]
Evaluate conditional expression.
This is a synonym for the "test" builtin, but the last argument must
be a literal ']', to match the opening '['.
Se você está realmente tentando obter o endereço IP de uma interface , talvez queira usar um pipeline, como um dos seguintes (há várias maneiras de obter o mesmo resultado):
ifconfig eth0 | grep -Eom1 'inet addr:([0-9]{1,3}\.){3}[0-9]{1,3}' | cut -d: -f2
ifconfig eth0 | sed -re '/inet addr:/!d;s/^[^:]+://;s/ .*$//'