ChinaTunnel
ChinaTunnel copied to clipboard
redirect.sh部份原始碼不符合POSIX標準,在Android預設的POSIX shell下執行會報錯
詳細情況請見Unblock Youku討論區的這個帖子
那邊板主建議我過來回報一下
概括的說就是redirect.sh中有兩段這樣的代碼
OLD_IFS="$IFS"
IFS=";"
arr=($line)
IFS="$OLD_IFS"
mark=${arr[0]}
ip=${arr[1]}
domain=${arr[2]}
當中用到bash中獨有的陣列功能
如果在其他shell中執行可能會報錯
而Android預設的是根據POSIX標準開發的shell
如果不先換成其他類bash的shell鐵定會報錯(例如安裝支持bash的busybox)
但是上述代碼並不一定必要用陣列功能
改成下列代碼便能在POSIX shell下執行不用先替換成bash
mark=$(echo $line | cut -d ';' -f 1)
ip=$(echo $line | cut -d ';' -f 2)
domain=$(echo $line | cut -d ';' -f 3)