我使用 OS X 10.6.5、Bash。
当我运行这个时:
echo $IP; echo of; echo $IPLINES
我得到这个输出:
219.80.4.150:3128
of
1108
当我运行这个时:
echo $IP of $IPLINES
我得到这个输出:
of 1108.150:3128
我期望得到:
219.80.4.150:3128 of 1108
什么会导致我得到的输出失真?
实际的脚本是这样的:
#!/bin/bash
IPLINES=`cat a.txt | wc -l | awk '{print $1}'`
if [ $IPLINES > 1 ]; then
LINE=`expr $RANDOM % $IPLINES + 1`
IP=`head -$LINE a.txt | tail -1`
sed -e "${LINE}d" -i .b a.txt
echo $IP of $IPLINES
fi
这里有一个大胆的猜测:您正在从 .txt 文件中提取 IP 变量 - 如果这是一个 Windows 文件,或者是 Windows 风格的编码,则行以\r\n
。你把换行符去掉,但是如果有一个怎么办?\r
这会让你回到行首吗?
快速脏修复,不问任何问题:使用echo -n
,它会抑制回显文本末尾的换行符。
echo -n $IP; echo -n of; echo -n $IPLINES
如果问题依然存在,可能就是我上面说的问题。尝试右修剪$IP
.
编辑:抱歉,没有看到 OSX 部分。在 OSX 中,行结尾为\r
——这一定是问题所在。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)