2017-06-10 4 views
1

Es scheint nicht so, dass sed die Variable $ IP kennt. Wie kann ich Folgendes erhalten?Wie bekomme ich sed, um eine Benutzereingabevariable zu verwenden?

read -p "Please enter the line number with the IP you wish to block from accessing the Internet? " IP 

echo $IP 

IP_LINE_NUMBER=`nmap -n -sn 192.168.3.0/24 -oG - | awk '/Up$/{print $2}' | sed '$IPq;d'` 

echo $IP_LINE_NUMBER 
+0

Mögliche Duplikat [Ersetzen einer Zeichenfolge in Shell-Skript mit einer Variablen] (https://stackoverflow.com/questions/3306007/replace-a-string-in-shell- script-using-a-variable) –

Antwort

0

Sie haben doppelte Anführungszeichen verwenden und setzen {} um IP:

ip_line_number=$(nmap -n -sn 192.168.3.0/24 -oG - | awk '/Up$/{print $2}' | sed "${IP}q;d") 
  • Hinweis: Sie benötigen $(...) Befehl Substitution die Ausgabe in die Variable

See zu bekommen auch :

+0

Ich habe das ausprobiert. Es ergibt NULL – user8022637

+0

Korrigiert - benötigt ein '{}' um die Variable. Bitte versuche. – codeforester

+0

Es tut mir leid, Knospe, aber es ergibt diesen Fehler: sed: -e Ausdruck # 1, char 3: '} will keine Adressen – user8022637

Verwandte Themen