스크립트 파일 소스 질문 드립니다.
아래 스크립트 파일의 내용은 interface가 up됬을 시 자동으로 route table을 작성하는 것입니다.
그런데 계속
if [ -z $DEVICE_IFACE ]; then
echo "2"
exit 0
이부분에서 걸려 더 이상 진행 되지 않습니다.
-z의 의미가 무엇 이죠?
env > /etc/network/if_up_env
if [ "$IFACE" = lo -o "$MODE" != start ]; then
echo "1"
exit 0
fi
if [ -z $DEVICE_IFACE ]; then
echo "2"
exit 0
fi
# FIRST, make a table-alias
if [ `grep $DEVICE_IFACE /etc/iproute2/rt_tables | wc -l` -eq 0 ]; then
NUM=`cat /etc/iproute2/rt_tables | wc -l`
echo "$NUM $DEVICE_IFACE" >> /etc/iproute2/rt_tables
fi
if [ $DHCP4_IP_ADDRESS ]; then
SUBNET=`echo $IP4_ADDRESS_0 | cut -d \ -f 1 | cut -d / -f 2`
ip route add table $DEVICE_IFACE to $DHCP4_NETWORK_NUMBER/$SUBNET dev $DEVICE_IFACE scope link
ip route add table $DEVICE_IFACE default via $DHCP4_ROUTERS dev $DEVICE_IFACE
ip rule add from $DHCP4_IP_ADDRESS table $DEVICE_IFACE
else
# PPP-interface
IPADDR=`echo $IP4_ADDRESS_0 | cut -d \ -f 1 | cut -d / -f 1`
ip route add table $DEVICE_IFACE default dev $DEVICE_IP_IFACE scope link
ip rule add from $IPADDR table $DEVICE_IFACE
fi
man test 해보시면 의미를 하실 수
man test 해보시면 의미를 하실 수 있습니다.
-z는 변수의 값이 NULL이면 참이 됩니다.
그러므로 스크립트에서 보면 DEVICE_IFACE가 선언된 곳이나 사용된 곳이 없는데,
스크립트가 실행되기 전에 어디서 선언되어 사용되고 있는 것인가요?
evn에 선언이 되어 있거나 체크해보시기 바랍니다.
노력만이 살길이다.
댓글 달기