Почему некоторые переменные в начале не отображаются в BASH? - PullRequest
0 голосов
/ 26 апреля 2018

Вот мой полный код:

   #!/bin/bash
wget -O /tmp/crex24.txt --no-check-certificate "https://api.crex24.com/CryptoExchangeService/BotPublic/ReturnTicker?request=[NamePairs=BTC_LTC,BTC_ETH,BTC_XMR]"
echo "++++++++++++++++ CREX 24 ++++++++++++++++"
number_of_pairs=`cat /tmp/crex24.txt | grep PairId | wc -l`
count=1
while [ $count -le $number_of_pairs ]
do
pairname=`cat /tmp/crex24.txt | grep -e "PairName" | sed -n "${count}p" | cut -d: -f2 | tr -d '", '  | cut -c1-10`
highprice=`cat /tmp/crex24.txt | grep -e "HighPrice" | sed -n "${count}p" | cut -d: -f2 | tr -d '", ' | cut -c1-10`
lowprice=`cat /tmp/crex24.txt | grep -e "LowPrice" | sed -n "${count}p" | cut -d: -f2 | tr -d '", ' | cut -c1-10`
echo "$highprice $lowprice $pairname"
echo "$pairname $highprice $lowprice"
let "count++"
done

Выход:

++++++++++++++++ CREX 24 ++++++++++++++++
0.01663970 0.01574956 BTC_LTC
 0.01663970 0.01574956
0.07105730 0.06700000 BTC_ETH
 0.07105730 0.06700000
0.03130300 0.02700000 BTC_XMR
 0.03130300 0.02700000

Мой вопрос: почему $ имя_папки выводится в начале? Что я делаю не так?

Спасибо.

1 Ответ

0 голосов
/ 26 апреля 2018

Проблема может заключаться в том, что pairname содержит символ \ r, как показано с bash -x script.sh

+ pairname=$'BTC_XMR\r'

Поскольку вы использовали echo без -e, это не должно быть проблемой, но я не знаю почему, echoобработайте этот escape-символ и все, что после этого возвращается к первому символу строки и охватывает имя пары.

Мой ответ - использовать cut -d вместо cut -c, чтобы получить имя пары

pairname=$(cat /tmp/crex24.txt | grep -e "PairName" | sed -n "${count}p" | cut -d: -f2 | cut -d\" -f2)

дает вам

++++++++++++++++ CREX 24 ++++++++++++++++
0.01663970 0.01574956 BTC_LTC
BTC_LTC 0.01663970 0.01574956
0.07105730 0.06700000 BTC_ETH
BTC_ETH 0.07105730 0.06700000
0.03130300 0.02700000 BTC_XMR
BTC_XMR 0.03130300 0.02700000

Теперь у нас есть имя в начале

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...