我试图创建的脚本将有两个功能。但是,我面临一些错误,并感谢有人能指导我。打算从文本文件打印出来
- 使用基于“价格”和“已售数量”字段计算利润。
- 打印出文本文件中的所有内容。
我的BookDB文本文件中的数据格式如下所示。该文本文件仅包含5个字段,而涉及盈利的第6个字段只应显示,而不是保存到文本文件中。我的数据库中的分隔符是“:”。
Title:Author:Price:Quantity avilable:Quantity Sold
a(Title):b(Author):$1.00(Quantity.avilable):52:248(Quantity Sold)
下面是所需的输出
Title:Author:Price:Quantity Available:Quantity Sold:Profit
A:B:1.00:20:10:$10
现在,我的输出是这样
Advanced Book Inventory System
1.) Inventory summary report
2.) Quit
Enter selection: 1
6) inventory_summary_report
./filesearch.sh: line 17: (40.30
40.80
50.00
55.00
15.00
56.80
89.10
76.00
23.60
12.99
1.00)*(50
10
248): command not found
./filesearch.sh: line 18: BEGIN: command not found
Harry Potter - The Half Blood Prince,J.K Rowling,$40.30,10,50,Harry Potter - The Half
Blood Prince:J.K Rowling:40.30:10:50
The little Red Riding Hood,Dan Lin,$40.80,20,10,The little Red Riding Hood:
Dan Lin:40.80:20:10
下面是我的编码,不胜感激,如果任何人都可以告诉我,我的错误在编码
#!/bin/bash
clear
function press_enter
{
echo ""
echo -n "Press Enter to continue"
read
clear
}
function inventory_summary_report
{
echo "1) inventory_summary_report"
echo ""
price="$(cat BookDB.txt | cut -d: -f3)"
sold="$(cat BookDB.txt | cut -d: -f5)"
sales=$(echo scale=3;"($price)*($sold)" |bc)
BEGIN { printf "%s,%s,$%s,%s,%s,%s\n" , "Title", "Author", "Price", "Qty Avail", "Qty Sold", "Total Sales" }
awk -F':' -v search="$1" '$1 ~ search || $2 ~ search { i++; printf "%s,%s,$%s,%s,%s,%s\n", $1, $2, $3, $4, $5,$sales} END { printf "%d records found\n", i }' BookDB.txt
}
#Display menu options and wait for selection
selection=0
until [ "$selection" = "1" ]; do
echo ""
echo ""
echo "Advanced Book Inventory System"
echo ""
echo ""
echo " 1.) Inventory summary report"
echo " 2.) Quit"
echo -n "Enter selection: "
read selection
echo ""
case $selection in
1) inventory_summary_report;press_enter;;
2) break ;;
*) tput setf 4;echo "Please enter 1 or 2, ";tput setf 7; press_enter
esac
done`
这是一个转让问题吗? –
@RishiDua我认为这几乎是必须的。 :-)嘿OP!你的'awk'搞砸了。 BEGIN块不合适。另外,摆脱设置'price','sold'和'sales'的'bash'行,并计算'awk'中的所有内容。修改您的帖子以显示更改。 – ooga