【发布时间】:2014-03-19 19:22:32
【问题描述】:
我正在解析 avahi-browse 工具的输出,我的脚本应该与 POSIX 兼容。
接下来我会这样做:
local _dnssd=`avahi-browse -apt`
if [ -z "$_dnssd" ]; then
echo "No info"
else
IFS='
' # it's new line character in IFS
for _row in $_dnssd
do
local _tmpIFP="$IFS"
IFS=";"
case "$_row" in
...
esac
IFS="$_tmpIFS"
done
fi
我真的不喜欢将换行符分配给 IFS。是否有可能以更好的方式替换它?
我尝试了stackoverflow的一些建议,但没有奏效:
IFS=$(echo -e '\n')
avahi-浏览输出:
+;br0;IPv4;switch4B66E4;_http._tcp;local
+;br0;IPv4;switch4B66E4;_csco-sb._tcp;local
【问题讨论】:
-
我猜你可以使用
IFS=$'\n' -
fedorqui,我不能使用任何 bashism。它将在 POSIX shell 上执行。
-
local也不是 POSIX shell 的一部分。