У меня есть этот фрагмент bash-скрипта:
внутренний=$(/sbin/ifconfig $adapter | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}')
$adapter="eth0" Я хочу выполнять это до тех пор, пока внутренний параметр не будет иметь правильное значение, а после этого я хочу перейти к остальной части моего скрипта. Есть ли у вас какие-нибудь идеи, как с этим справиться?
После этого я закодировал его для отправки IP через смс!
Заранее спасибо.
решение1
Попробуйте сделать это:
#!/bin/bash
PATH+=/sbin
adapter=eth0
internal=""
until [[ $internal =~ [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} ]]; do
sleep 1
internal=$(
ifconfig "$adapter" |
awk -F'(inet add?r:| +|:)' '/inet add?r/{print $3}'
)
done
# send sms
Как вы видите, я использую только одну трубку: |
сawk, больше не нужно, awk
можно выполнить всю обработку.