IP=$(ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | cut -d: -f2 | awk '{print $1}')
echo $IP
| 管線階段 | 作用 |
|---|---|
ifconfig | 列出所有網路介面資訊 |
grep 'inet addr:' | 過濾含 IPv4 位址的行 |
grep -v '127.0.0.1' | 排除本地回環位址 |
cut -d: -f2 | 以冒號分隔,取第二欄 (IP 後段) |
awk '{print $1}' | 取第一欄,去除尾端廣播/網遮罩資訊 |
IP=$(ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | head -n1 | cut -d: -f2 | awk '{print $1}')
或在第一個 grep 加 -m 1 參數(GNU grep 支援):
IP=$(ifconfig | grep -m 1 'inet addr:' | grep -v '127.0.0.1' | cut -d: -f2 | awk '{print $1}')
新版 Linux 發行版建議使用 ip 指令(ifconfig 屬 net-tools 套件,已停止維護):
# 取得第一張 UP 狀態非回環介面的 IPv4
ip -4 -o addr show scope global | awk '{print $4}' | cut -d/ -f1 | head -n1