【发布时间】:2015-01-12 16:51:55
【问题描述】:
我在下面得到了这个代码,这是在作者字段为空时搜索一本书。它会打印出匹配的数量,它会打印出匹配的行数并显示该书的所有详细信息。但是如果我现在运行此代码,显示的信息会出现问题,它将显示在终端中
一些示例输入如下所示
The Hunger Games:Suzanne Collins:10:1:50
The Hunger Games:fake author:1:1:1
我使用的代码打印的内容如下所示
Found 2 Records
The Hunger Games
The Hunger Games Suzanne Collins
Fake Author $10
1 50
1 25
1
我希望输出变成
Found 2 records
The Hunger Games, Suzanne Collins, $10, 1, 50
The Hunger Games, Fake Author, $1, 1, 1
希望有人能够帮助我解决这个问题。谢谢
function search_book
{
echo "Enter Title: "
read title
echo "Enter Author: "
read author
result_title=$(grep -ise "$title\:" BookDB.txt)
record=$(grep -io "$title\:" BookDB.txt
if [ "$result_title" != "" ] && [ "$result_title" == "$result_title" ] && [ "$author" == "" ]
then
title=$(echo "$result_title" | cut -f 1 -d ":")
author=$(echo "$result_title" | cut -f 2 -d ":")
price=$(echo "$result_title" | cut -f 3 -d ":")
qty_ava=$(echo "$result_title" | cut -f 4 -d ":")
qty_sold=$(echo "$result_title" | cut -f 5 -d ":")
echo ""
echo "Found" $record "records:"
echo ""
echo -e "$title\t$author\t"\$"$price\t$qty_ava\t$qty_sold"
fi
【问题讨论】:
-
向我们展示这个脚本的输入。
-
能否请您发布 BookDB.txt 的示例输入。我认为使用 awk 可以大大简化这段代码,以获取所有信息并打印出您想要的输出。
-
嗨,我按要求添加了示例输入,抱歉我忘记了
-
你真的应该展示你的确切脚本。您显示的内容将无法正常运行。至少有一个
)和一个}缺失。检查结果标题是否等于自身也有点奇怪。