jq编写购物车
时间: 2024-02-08 19:04:56 浏览: 40
假设你有一个商品列表,每个商品都有名称、价格和库存数量。你可以使用 jq 编写一个简单的购物车程序来处理用户的购买请求。以下是一个可能的实现:
```bash
# 商品列表,格式为 JSON 数组
products='[
{"name": "apple", "price": 2.5, "quantity": 10},
{"name": "banana", "price": 1.5, "quantity": 5},
{"name": "orange", "price": 3, "quantity": 8},
{"name": "pear", "price": 2, "quantity": 12}
]'
# 定义一个空的购物车,格式为 JSON 对象
cart='{"items": []}'
# 处理用户输入,假设用户输入的是商品名称和购买数量,格式为 "name:quantity"
input="apple:3"
# 解析用户输入,获取商品名称和购买数量
name=$(echo "$input" | cut -d':' -f1)
quantity=$(echo "$input" | cut -d':' -f2)
# 查找商品列表中对应的商品
product=$(echo "$products" | jq ".[] | select(.name == \"$name\")")
# 检查商品是否存在以及库存是否足够
if [ -z "$product" ]; then
echo "Product not found"
elif [ "$(echo "$product" | jq '.quantity')" -lt "$quantity" ]; then
echo "Not enough stock"
else
# 将商品添加到购物车中
item=$(echo "$product" | jq ".quantity = $quantity")
cart=$(echo "$cart" | jq ".items += [$item]")
echo "Item added to cart"
fi
# 打印购物车内容
echo "$cart" | jq
```
这个程序使用 jq 命令来解析和操作 JSON 数据。首先定义了商品列表和购物车的初始值,然后处理用户输入,并在商品列表中查找对应的商品。如果商品存在且库存足够,将商品添加到购物车中。最后打印购物车内容。你可以根据需要扩展这个程序,例如支持删除购物车中的商品、计算购物车总价等等。
阅读全文