I use OS X 10.6.5, Bash.
When I run this:
echo $IP; echo of; echo $IPLINES
I get this output:
219.80.4.150:3128
of
1108
When I run this:
echo $IP of $IPLINES
I get this output:
of 1108.150:3128
I expected to get:
219.80.4.150:3128 of 1108
What would cause the distorted output I am getting?
The actual script is this:
#!/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
A wild guess here: you are extracting the IP variable from a .txt file -- if that's a Windows file, or is encoded Windows-style, lines end with \\r\\n
. You take the newline away, but what if there's a \\r
in it that's making you go back to the beginning of the line?
Quick dirty fix with no questions asked: use echo -n
, it supresses the newline at the end of the echoed text.
echo -n $IP; echo -n of; echo -n $IPLINES
If the problem persists, it's probably what I said above. Try right-trimming $IP
.
EDIT: didn't see the OSX part, sorry. In OSX, lines end with \\r
-- that must be the issue.
在$IP
的末尾似乎有一个回车符( \\r
)。
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.