Читать и распределять стоимость в результате команды

у меня есть следующий рукописный шрифт

nmap_result=$(sudo nmap -sP 192.168.0.1/24)
own_ip=$(ifconfig wlp2s0b1 | grep inet | awk '{print $2}' | cut -d':' -f2)
temp_mac=$(echo "$nmap_result" | grep "MAC Address:" | awk '{print $3;}') 
temp_ip=$(echo "$nmap_result" | grep "192.168." | awk '{print $5;}' | grep -v "$own_ip")
temp_vendor=$(echo "$nmap_result" | grep "MAC Address:" | awk '{print $4;}')
readarray -t mac <<<"$temp_mac"
readarray -t ip <<<"$temp_ip"
readarray -t vendor <<<"$temp_vendor"
len=${#mac[@]}
for (( i=0; i<${len}; i++ ));
do
echo ${vendor[i]}": "${ip[i]}" - "${mac[i]}
done

что, выполнив это, дает мне например следующий результат

(Hon: 192.168.0.1 - 9x:Dx:1x:6x:Bx:Dx
(Mot: 192.168.0.5 - Ex:9x:2x:Dx:8x:Fx
(LG: 192.168.0.7 - Ax:9x:6x:Fx:Fx:Cx
(TCT: 192.168.0.8 - Bx:4x:1x:Ax:Cx:5x
(LG: 192.168.0.11 - Cx:9x:0x:5x:0x:Cx

есть какой-то способ нумеровать, и что распределил каждому из ip стоимость

например

1. (Hon: 192.168.0.1 - 9x:Dx:1x:6x:Bx:Dx
2. (Mot: 192.168.0.5 - Ex:9x:2x:Dx:8x:Fx
3. (LG: 192.168.0.7 - Ax:9x:6x:Fx:Fx:Cx
4. (TCT: 192.168.0.8 - Bx:4x:1x:Ax:Cx:5x
5. (LG: 192.168.0.11 - Cx:9x:0x:5x:0x:Cx

и так делать меню выбора и выбрав число делать определенное действие

я надеюсь объясниться

3
задан 13.04.2016, 17:13
1 ответ

С момента, что ты используешь цикл: используй переменную!

for (( i=0; i<${len}; i++ )); do
   printf "%d. %s: %s - %s\n" $((i+1)) "${vendor[i]}" "${ip[i]}" "${mac[i]}"
done

Обрати внимание, что я использую printf чтобы иметь больше контроля, о котором я пишу.


Ощутитесь, что твой код очень optimizable, так как ты например говоришь:

temp_mac=$(echo "$nmap_result" | grep "MAC Address:" | awk '{print $3;}') 

когда простой awk уже он бы это решил:

temp_mac=$(awk '/MAC Address:/ {print $3}' <<< "$nmap_result") 
3
ответ дан 24.11.2019, 14:36
  • 1
    но то, что я хочу, состоит, в том, чтобы выбрав число, мне сделало действие, например: read-p и #39; Option: и #39; OPT if [[! $OPT == " 1"]]; then fi жените $OPT in – Gabriel Caltzontzi suarez 13.04.2016, 18:34
  • 2
    @GabrielCaltzontzisuarez тогда издай твой начальный вопрос объясняя ясно qu и # 233; ты хочешь сделать. Notif и # 237; came despu и # 233; s для того, чтобы он смог проверять мой ответ. – fedorqui 13.04.2016, 23:40

Теги

Похожие вопросы