#!/bin/bash # 发货记录 SN 查询脚本 REDIS_HOST="${REDIS_HOST:-180.163.74.83}" REDIS_PORT="${REDIS_PORT:-6379}" REDIS_PASSWORD="${REDIS_PASSWORD}" REDIS_DB="${REDIS_DB:-0}" # 颜色定义 GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 构建 redis-cli 命令 REDIS_CMD="redis-cli -h $REDIS_HOST -p $REDIS_PORT" if [ -n "$REDIS_PASSWORD" ]; then REDIS_CMD="$REDIS_CMD -a $REDIS_PASSWORD" fi REDIS_CMD="$REDIS_CMD -n $REDIS_DB" # 显示帮助 show_help() { echo "发货记录 SN 查询工具" echo "" echo "用法:" echo " $0 <命令> [参数]" echo "" echo "命令:" echo " query 查询单个 SN 的出货信息" echo " count 查看总记录数" echo " list [数量] 列出最近的 SN(默认 20 条)" echo " search <模式> 搜索匹配的 SN(如: SN00*)" echo " exists 检查 SN 是否存在" echo "" echo "示例:" echo " $0 query SN0001" echo " $0 count" echo " $0 list 50" echo " $0 search 'SN00*'" } # 查询单个 SN query_sn() { local sn=$1 if [ -z "$sn" ]; then echo -e "${RED}错误: 请提供 SN 号${NC}" exit 1 fi echo -e "${YELLOW}查询 SN: $sn${NC}" result=$($REDIS_CMD HGET shipment_sn_mapping "$sn") if [ -z "$result" ]; then echo -e "${RED}未找到该 SN 的出货记录${NC}" else echo -e "${GREEN}找到记录:${NC}" echo "$result" | python3 -m json.tool 2>/dev/null || echo "$result" fi } # 统计总数 count_records() { echo -e "${YELLOW}统计记录总数...${NC}" count=$($REDIS_CMD HLEN shipment_sn_mapping) echo -e "${GREEN}总记录数: $count${NC}" } # 列出 SN list_sns() { local limit=${1:-20} echo -e "${YELLOW}列出前 $limit 条记录...${NC}" $REDIS_CMD HSCAN shipment_sn_mapping 0 COUNT "$limit" | tail -n +2 } # 搜索 SN search_sns() { local pattern=$1 if [ -z "$pattern" ]; then echo -e "${RED}错误: 请提供搜索模式${NC}" exit 1 fi echo -e "${YELLOW}搜索模式: $pattern${NC}" $REDIS_CMD HSCAN shipment_sn_mapping 0 MATCH "$pattern" COUNT 100 } # 检查存在 check_exists() { local sn=$1 if [ -z "$sn" ]; then echo -e "${RED}错误: 请提供 SN 号${NC}" exit 1 fi exists=$($REDIS_CMD HEXISTS shipment_sn_mapping "$sn") if [ "$exists" = "1" ]; then echo -e "${GREEN}SN $sn 存在${NC}" else echo -e "${RED}SN $sn 不存在${NC}" fi } # 主逻辑 case "${1:-help}" in query) query_sn "$2" ;; count) count_records ;; list) list_sns "$2" ;; search) search_sns "$2" ;; exists) check_exists "$2" ;; help|--help|-h) show_help ;; *) echo -e "${RED}未知命令: $1${NC}" show_help exit 1 ;; esac