OS X 10.6.5,BASH
当我运行这个:
echo $IP; echo of; echo $IPLINES
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
219.80.4.150:3128
of
1108
Run Code Online (Sandbox Code Playgroud)
当我运行这个:
echo $IP of $IPLINES
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
of 1108.150:3128
Run Code Online (Sandbox Code Playgroud)
我期望得到:
219.80.4.150:3128 of 1108
Run Code Online (Sandbox Code Playgroud)
什么会导致我得到的扭曲输出?
实际的脚本是这样的:
#!/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
Run Code Online (Sandbox Code Playgroud)
sle*_*ica 11
这里有一个疯狂的猜测:你正在从.txt文件中提取IP变量 - 如果这是一个Windows文件,或者是Windows风格的编码,则行结束\r\n.你把新换线拿走了,但是如果有一个\r让你回到线的开头呢?
没有问题的快速脏修复:使用echo -n,它在回显文本的末尾压缩换行符.
echo -n $IP; echo -n of; echo -n $IPLINES
Run Code Online (Sandbox Code Playgroud)
如果问题仍然存在,那可能就是我上面所说的.尝试右修剪$IP.
编辑:没有看到OSX部分,抱歉.在OSX中,行结束\r- 这必须是问题.