xxl_job系列---【GLUE(shell)模式如何传多个参数,并被shell接收】

1.场景

我需要传入多个参数,在执行任务时传入的任务参数用逗号隔开,到shell中都被$1当做字符串接收到了,没办法,只能在shell中截取字符串,截成多个参数。

2.编辑入参

CRON:0 0 0 1 * ? #每月1号0点执行

点击“任务管理”->“操作”->“编辑”->“任务参数”:afp,date +%Y%m,/opt/app/software/xxl_job/file/event2esMapping.json
注意:date +%Y%m,不能加${}

3.编辑shell脚本

点击“任务管理”->“操作”->“GLUE IDE”

#!/bin/bash
echo "xxl-job: 每月定时创建索引"

echo "脚本位置:$0"
echo "任务参数:$1"
echo "分片序号:$2"
echo "分片总数:$3"

#关键代码---开始
PARAMS_STR=$1
OLD_IFS=$IFS
IFS=','
read -ra params <<< "$PARAMS_STR"
IFS=$OLD_IFS
PARAM1=${params[0]}
PARAM2=${params[1]}
PARAM3=${params[2]}

#注意`${PARAM2}`的着重标记单引号不能省略,不然就变成:afp_date +%Y%m
INDEX_NAME=${PARAM1}_`${PARAM2}`
#INDEX_NAME的最终值为:afp_202402
echo "index_name is $INDEX_NAME"
#关键代码---结束

ES_NODES=("http://192.168.1.1:9200" "http://192.168.1.2:9200" "http://192.168.1.3:9200")
for node in "${ES_NODES[@]}"
do
  echo "在 $node 节点创建索引 $INDEX_NAME!"
  curl -X PUT "$node/$INDEX_NAME" -H 'Content-Type: application/json' -d @${PARAM3}
done

echo "Good Bye!"
exit 0

4.扩展

event2esMapping.json

{
  "settings": {
    "number_of_shards": "12",
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "ID": {
        "type": "keyword"
      },
      "NAME": {
        "type": "keyword"
      },
      "TIME": {
        "type": "long"
      },
      "CREATE_TIME": {
        "type": "date"
      },
      "VALID": {
        "type": "integer"
      }
    }
  }
}
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值