OS X 10.6.5, BASHEcho BASH Variablen zu überschreiben Text Problem
Als ich laufen diese:
echo $IP; echo of; echo $IPLINES
ich diese Ausgabe:
219.80.4.150:3128
of
1108
Als ich dies auszuführen:
echo $IP of $IPLINES
Ich bekomme diesen Ausgang:
of 1108.150:3128
ich erwartet zu bekommen:
219.80.4.150:3128 of 1108
Was den verzerrten Ausgang Ich würde dazu führen, bin immer?
Das eigentliche Skript ist dies:
#!/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
Rechts und rechts. Ich habe Zeilenende in meiner Datei geändert, Problem gelöst. Danke für -n, ich war mit dieser Flagge nicht vertraut. – zevlag
Tatsächlich enden in OS X Zeilen typischerweise * nicht * mit \ r. Normalerweise sehen Sie das nur in Dateien von alten Legacy-Apps aus klassischen Mac OS-Tagen. –
Sie können unerwünschte Zeichen auch mit 'tr' entfernen:' cleanline = "$ (echo $ zeile | tr -d '\ r')" ' – xonya