Shell Scripting Question: Here is my code, it runs. In my stocks.txt file (also
ID: 3591154 • Letter: S
Question
Shell Scripting Question: Here is my code, it runs. In my stocks.txt file (also found below) I have 4 stock symbols that I need to output. I get 4 outputs but it is the same one for all 4 boxes as you see when you run the code.
#
# for loop to process stock list
#
clear
while true
do
for stock in `cat stocks.txt`
do
wget -qO- http://finance.yahoo.com/d/quotes.csv?s=$stock&f=nl1c1v >data1
cat data1 | sed s/", "/" "/g >data2
mv data2 data1
change=`cat data1 | awk -F, '{print $3}'`
negative=`echo $change | grep "-" | wc -l`
positive=`echo $change | grep "+" | wc -l`
if [ $negative -eq 1 ]
then
#
# 1 = red, 0 = black
#
tput setab 1;
tput setaf 0;
else
if [ $positive -eq 1 ]
then
#
# 2 = green, 0 = black
#
tput setab 2;
tput setaf 0;
fi
fi
# Top left box
tput cup 1 10;
echo " "
tput cup 1 10;
echo " $stock"
name=`cat data1 | awk -F, '{printf "%-14.14s", $1}'`
tput cup 2 10;
echo " "
tput cup 2 10;
echo "$name"
price=`cat data1 | awk -F, '{print $2}'`
tput cup 3 10;
echo " "
tput cup 3 10;
echo "$price"
change=`cat data1 | awk -F, '{print $3}'`
tput cup 4 10;
echo " "
tput cup 4 10;
echo "$change"
volume=`cat data1 | awk -F, '{print $4}'`
tput cup 5 10;
echo " "
tput cup 5 10;
echo "$volume"
#Bottom left box
tput cup 7 10;
echo " "
tput cup 7 10;
echo " $stock"
name=`cat data1 | awk -F, '{printf "%-14.14s", $1}'`
tput cup 8 10;
echo " "
tput cup 8 10;
echo "$name"
price=`cat data1 | awk -F, '{print $2}'`
tput cup 9 10;
echo " "
tput cup 9 10;
echo "$price"
change=`cat data1 | awk -F, '{print $3}'`
tput cup 10 10;
echo " "
tput cup 10 10;
echo "$change"
volume=`cat data1 | awk -F, '{print $4}'`
tput cup 11 10;
echo " "
tput cup 11 10;
echo "$volume"
#Top right box
tput cup 1 30;
echo " "
tput cup 1 30;
echo " $stock"
name=`cat data1 | awk -F, '{printf "%-14.14s", $1}'`
tput cup 2 30;
echo " "
tput cup 2 30;
echo "$name"
price=`cat data1 | awk -F, '{print $2}'`
tput cup 3 30;
echo " "
tput cup 3 30;
echo "$price"
change=`cat data1 | awk -F, '{print $3}'`
tput cup 4 30;
echo " "
tput cup 4 30;
echo "$change"
volume=`cat data1 | awk -F, '{print $4}'`
tput cup 5 30;
echo " "
tput cup 5 30;
echo "$volume"
#Bottom right box
tput cup 7 30;
echo " "
tput cup 7 30;
echo " $stock"
name=`cat data1 | awk -F, '{printf "%-14.14s", $1}'`
tput cup 8 30;
echo " "
tput cup 8 30;
echo "$name"
price=`cat data1 | awk -F, '{print $2}'`
tput cup 9 30;
echo " "
tput cup 9 30;
echo "$price"
change=`cat data1 | awk -F, '{print $3}'`
tput cup 10 30;
echo " "
tput cup 10 30;
echo "$change"
volume=`cat data1 | awk -F, '{print $4}'`
tput cup 11 30;
echo " "
tput cup 11 30;
echo "$volume"
#Reset colors back to default
tput setaf 7;
tput setab 0;
sleep 2
done
done
Text file (stocks.txt)
MCD
AAPL
NKE
DIS
Explanation / Answer
check the code
#
# for loop to process stock list
#
clear
while true
do
for stock in `cat stocks.txt`
do
wget -qO- http://finance.yahoo.com/d/quotes.csv?s=$stock&f=nl1c1v >data1
cat data1 | sed s/", "/" "/g >data2
mv data2 data1
change=`cat data1 | awk -F, '{print $3}'`
negative=`echo $change | grep "-" | wc -l`
positive=`echo $change | grep "+" | wc -l`
if [ $negative -eq 1 ]
then
#
# 1 = red, 0 = black
#
tput setab 1;
tput setaf 0;
else
if [ $positive -eq 1 ]
then
#
# 2 = green, 0 = black
#
tput setab 2;
tput setaf 0;
fi
fi
# Top left box
tput cup 1 10;
echo " "
tput cup 1 10;
echo " $stock"
name=`cat data1 | awk -F, '{printf "%-14.14s", $1}'`
tput cup 2 10;
echo " "
tput cup 2 10;
echo "$name"
price=`cat data1 | awk -F, '{print $2}'`
tput cup 3 10;
echo " "
tput cup 3 10;
echo "$price"
change=`cat data1 | awk -F, '{print $3}'`
tput cup 4 10;
echo " "
tput cup 4 10;
echo "$change"
volume=`cat data1 | awk -F, '{print $4}'`
tput cup 5 10;
echo " "
tput cup 5 10;
echo "$volume"
#Bottom left box
tput cup 7 10;
echo " "
tput cup 7 10;
echo " $stock"
name=`cat data1 | awk -F, '{printf "%-14.14s", $1}'`
tput cup 8 10;
echo " "
tput cup 8 10;
echo "$name"
price=`cat data1 | awk -F, '{print $2}'`
tput cup 9 10;
echo " "
tput cup 9 10;
echo "$price"
change=`cat data1 | awk -F, '{print $3}'`
tput cup 10 10;
echo " "
tput cup 10 10;
echo "$change"
volume=`cat data1 | awk -F, '{print $4}'`
tput cup 11 10;
echo " "
tput cup 11 10;
echo "$volume"
#Top right box
tput cup 1 30;
echo " "
tput cup 1 30;
echo " $stock"
name=`cat data1 | awk -F, '{printf "%-14.14s", $1}'`
tput cup 2 30;
echo " "
tput cup 2 30;
echo "$name"
price=`cat data1 | awk -F, '{print $2}'`
tput cup 3 30;
echo " "
tput cup 3 30;
echo "$price"
change=`cat data1 | awk -F, '{print $3}'`
tput cup 4 30;
echo " "
tput cup 4 30;
echo "$change"
volume=`cat data1 | awk -F, '{print $4}'`
tput cup 5 30;
echo " "
tput cup 5 30;
echo "$volume"
#Bottom right box
tput cup 7 30;
echo " "
tput cup 7 30;
echo " $stock"
name=`cat data1 | awk -F, '{printf "%-14.14s", $1}'`
tput cup 8 30;
echo " "
tput cup 8 30;
echo "$name"
price=`cat data1 | awk -F, '{print $2}'`
tput cup 9 30;
echo " "
tput cup 9 30;
echo "$price"
change=`cat data1 | awk -F, '{print $3}'`
tput cup 10 30;
echo " "
tput cup 10 30;
echo "$change"
volume=`cat data1 | awk -F, '{print $4}'`
tput cup 11 30;
echo " "
tput cup 11 30;
echo "$volume"
#Reset colors back to default
tput setaf 7;
tput setab 0;
sleep 2
done
done
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.