Ошибка подстановки команды Bash - PullRequest
0 голосов
/ 09 ноября 2019

Мне нужны некоторые спецификации и данные из числа латопов в ini-файле. Когда я пытаюсь получить IP-адрес с ip addr list <interface>, в скрипте ничего не происходит. Даже не ошибка.

Я пытаюсь цитировать вещи в своем коде. Ничего не меняется.

for w2 in /sys/class/net/wl* 
    do 
        w2i=$(basename $w2)
        echo $w2i
        addr=$(ip -o -4 addr list $w2i | awk '{print $4}' | cut -d/ -f1)
        echo $addr
        echo -e "$w2i=$addr"
done

Думаю, возможно, это из-за Varibales, но это также не работает (интерфейс установлен «вручную»):

for w2 in /sys/class/net/wl* 
    do 
        w2i=$(basename $w2)
        echo $w2i
        addr=$(ip -o -4 addr list wlp3s0 | awk '{print $4}' | cut -d/ -f1)
        echo $addr
        echo -e "$w2i=$addr"
done 

Когда я запускаю скрипт, я получаю wlp3s0и я должен закрыть скрипт ctl-c. Когда я запускаю ip -o -4 addr list wlp3s0 | awk '{print $4}' | cut -d/ -f1, он дает мне свой IP-адрес, как я и ожидал.

РЕДАКТИРОВАТЬ

Мне просто нужно записать полный путь команды ip,Может кто-нибудь объяснить, почему я должен это сделать? И особенно это не обязательно для cut или awk, которые также основаны на /usr/bin/?

for w2 in /sys/class/net/wl* 
    do 
        w2i=$(basename $w2)
        echo $w2i
        addr=$(/usr/bin/ip -o -4 addr list "$w2i" | awk '{print $4}' | cut -d/ -f1)
        echo $addr
        echo -e "$w2i=$addr"
done
}
...