Vous avez bien quelques problèmes avec ce script. le principal est que ipconfig affichera « \ r "caractères à la fin de la ligne qui enfle le calcu lation.
Une autre est que vous n'acceptez pas plusieurs cartes réseau, d'où mon ajout de "head -1"
. Vous devrez sélectionner la carte réseau que vous voulez un peu plus intelligemment.
Enfin, j'ai supprimé l'espace de début (en fait tous les espaces) de l'avant de l'adresse IP.
Les œuvres suivantes pour moi:
#!/bin/bash
#set -x
function IPADDRESS {
((v = $4 - 2))
echo $1.$2.$3.$v
}
ADDRESS=$(ipconfig | grep Address | head -1 | cut -f2 -d: | sed 's/[ \r]//g')
echo $ADDRESS
IPADDRESS $ADDRESS
délivrer en sortie:
192.168.91.7
192.168.91.5
En fait, ma sortie de la version la suivante:
192.168.91.1
192.168.91.-1
vous aurez donc besoin de regarder pour cette.
Je ne suis pas étranger à simuler la sortie pour impressionner/gérer cajole :-).
SNIPPET UTILES:
Le "set -x"
en haut du script (quand non commenté) est idéal pour trouver ce genre d'erreurs. Il sort chaque ligne après toutes les substitutions, mais avant l'exécution, afin que vous puissiez voir exactement ce qui se passe.