Hi alle Ich habe ein Skript, aber ich kann hinzufügen, bis die Zusammenfassung des Berichts .. halten mit synax Fehler. Geist hilft mir, werfen Sie einen Blick und mir sagen, was schief gelaufen ist ..
Ich weiß, ist ein bisschen lang, aber ich hoffe jemand kann mir mit ihr hep. Danke
die Fehlermeldung kommen, wenn ich versuchen, die Zusammenfassung des Berichts ..
Ich denke 1 des Problem ist das System date.thing.
Das Problem ist, über die Point-of-Sales.
Ich versuche, die summieren sich die tägliche Umsatz-und haben dann eine Gesamtsumme aller Verkäufe aller Tage.
Unten ist der Code.
Code:
# Global variables
POS=~/.Point_Of_Sales
POS=POS.txt
export POS
confirm()
{
echo -en "$@"
read ans
ans=`echo $ans | tr '[a-z]' '[A-Z]'`
if [ "$ans" == "Y" ]; then
return 0
else
return 1
fi
}
num_lines()
{
grep -i "$@" $POS|wc -l| awk '{ print $1 }'
}
find_lines()
{
# Find lines matching $1
res=-1
if [ ! -z "$1" ]; then
grep -i "$@" $POS
res=$?
fi
return $res
}
list_items()
{
# List items matching given search criteria
if [ "$#" -eq "0" ]; then
echo -en "Search for: (return to list all) "
read search
if [ -z "$search" ]; then
search="."
fi
echo
else
search="$@"
fi
find_lines "${search}" | while read i
do
echo "$i" | tr ':' '\t'
done
echo -en "Matches found: "
num_lines "$search"
}
add_item()
{
echo "Add Item: You will be prompted for 3 items:"
echo "- Item Description, Unit Price, Quantity Purchased -"
echo
echo -en "Item Description:"
read product
echo -en "Unit Price:"
read Unit_Price
echo -en "Quantity:"
read Quantity
Date_Purchased=$(date +"%d %b %Y")
echo "${product}:${Unit_Price}:${Quantity}:${Date_Purchased}" >> $POS
}
locate_single_item()
{
echo -en "Item to search for: "
read search
n=`num_lines "$search"`
if [ -z "$n" ]; then
n=0
fi
while [ "${n}" -ne "1" ]; do
#list_items "$search"
echo -en "${n} matches found. Please choose a "
case "$n" in
"0") echo "less" ;;
"*") echo "more" ;;
esac
echo "specific search term (q to return to menu): "
read search
if [ "$search" == "q" ]; then
return 0
fi
n=`num_lines "$search"`
done
return `grep -in $search $POS |cut -d":" -f1`
}
remove_item()
{
locate_single_item
search=`head -$? $POS | tail -1|tr ' ' '.'`
if [ -z "${search}" ]; then
return
fi
list_items "$search"
confirm "Remove?"
if [ "$?" -eq "0" ]; then
grep -v "$search" $POS > ${POS}.tmp ; mv ${POS}.tmp ${POS}
else
echo "NOT REMOVING"
fi
}
edit_item()
{
locate_single_item
search=`head -$? $POS | tail -1|tr ' ' '.'`
if [ -z "${search}" ]; then
return
fi
list_items "$search"
thisline=`grep -i "$search" $POS`
oldProduct=`echo $thisline|cut -d":" -f1`
oldUnitPrice=`echo $thisline|cut -d":" -f2`
oldQuanity=`echo $thisline|cut -d":" -f3`
echo "SEARCH : $search"
grep -v "$search" $POS > ${POS}.tmp ; mv ${POS}.tmp ${POS}
echo -en "Item Description: [ $oldProduct ] "
read Product
echo -en "Unit Price[ $oldUnitPrice ] "
read Unit_Price
echo -en "Quanity [ $oldQuanity ] "
read Quanity
Date_Purchased=$(date +"%d %b %Y")
echo "${Product}:${Unit_Price}:${Quanity}:${Date_Purchased}" >> $POS
}
summary_items()
{
#echo "- - - POS Summary Report - - -"
#echo "---------------------------"
#echo "Date Total POS"
#echo "---------------------------"
print_dtotal
#echo "---------------------------"
#print_gtotal
#echo "---------------------------"
#echo -en "Best Selling Product: "
#print_bestsell
#echo -en "Product with Highest POS: "
#print_phighPOS
#echo -en "Date with Highest POS: "
print_dtotal | sort -f4| while read z
do
echo $z | cut -f4 -d' '
return 0
done
echo
echo -en "Press Enter to continue..."
read
}
print_dtotal()
{
count=0
grep -i : $POS | cut -d: -f4 | sort -u | while read i
do
dtotal=0
grep -i "$i" $POS | while read x
do
count=`expr $count + 1`
temp1=`echo $x | cut -d: -f2 | cut -c2-`
temp2=`echo $x | cut -d: -f3`
temp3=`calcu_m $temp1 $temp2`
dtotal=`calcu_a $dtotal $temp3`
n=`num_lines "$i"`
if [ "${n}" -eq "${count}" ]; then
echo $i" $"$dtotal
fi
done
done
}
print_gtotal()
{
gtotal=0
grep -i : $POS | while read x
do
temp1=`echo $x | cut -d: -f2 | cut -c2-`
temp2=`echo $x | cut -d: -f3`
temp3=`calcu_m $temp1 $temp2`
gtotal=`calcu_a $gtotal $temp3`
n=`num_lines "$i"`
if [ "${n}" -eq "${count}" ]; then
echo "Grand Total $"$gtotal
fi
count=`expr $count + 1`
done
}
print_bestsell()
{
grep -i : $POS | sort -k4 -r -t: | while read bs
do
echo $bs | cut -d: -f1
return 0
done
}
print_phighPOS()
{
count=0
phigh="0.0"
grep -i : $POS | while read x
do
count=`expr $count + 1`
temp1=`echo $x | cut -d: -f2 | cut -c2-`
temp2=`echo $x | cut -d: -f3`
temp3=`calcu_m $temp1 $temp2`
comparex $temp3 $phigh
if [ "$?" -eq "0" ]; then
phigh=$temp3
phighx=`echo $x | cut -d: -f1`
fi
n=`num_lines ":"`
if [ "${n}" -eq "${count}" ]; then
echo $phighx
fi
done
}
comparex() # compare 2 decimal numbers $1 $2 eg 1.20 and 3.60
{
x1=`echo $1 | cut -d. -f1`
x2=`echo $1 | cut -d. -f2`
y1=`echo $2 | cut -d. -f1`
y2=`echo $2 | cut -d. -f2`
if [ "${x1}" -gt "${y1}" ]; then
return 0
elif [ "${x1}" -eq "${y1}" ]; then
if [ "${x2}" -gt "${y2}" ]; then
return 0
fi
fi
return 1
}
calcu_a() # add 2 decimal numbers $1 $2
{
x1=`echo $1 | cut -d. -f1`
x2=`echo $1 | cut -d. -f2`
y1=`echo $2 | cut -d. -f1`
y2=`echo $2 | cut -d. -f2`
x1=`expr $x1 + $y1`
x2=`expr $x2 + $y2`
x3=`expr $x2 \/ 100`
x1=`expr $x1 + $x3`
x2=`expr $x2 \% 100`
echo $x1"."$x2
}
calcu_m() # multiply 2 decimal numbers $1 $2
{
x1=`echo $1 | cut -d. -f1`
x2=`echo $1 | cut -d. -f2`
y=`echo $2`
x1=`expr $x1 \* $y`
x2=`expr $x2 \* $y`
x3=`expr $x2 \/ 100`
x1=`expr $x1 + $x3`
x2=`expr $x2 \% 100`
echo $x1"."$x2
}