我使用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
答案 0 :(得分:10)
这里有一个疯狂的猜测:你从.txt文件中提取IP变量 - 如果是Windows文件,或者是Windows风格编码,则行以\r\n
结束。你把新换线拿走了,但是如果它里面有\r
会让你回到线的开头呢?
快速脏修复,没有提出任何问题:使用echo -n
,它会在回显文本的末尾截断换行符。
echo -n $IP; echo -n of; echo -n $IPLINES
如果问题仍然存在,那可能就是我上面所说的。尝试正确修剪$IP
。
编辑:没看到OSX部分,抱歉。在OSX中,行以\r
结尾 - 这必须是问题。
答案 1 :(得分:2)
\r
的结尾似乎有一个回车符($IP
)。