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[@]}"
doecho "在 $node 節點創建索引 $INDEX_NAME!"curl -X PUT "$node/$INDEX_NAME" -H 'Content-Type: application/json' -d @${PARAM3}
doneecho "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"}}}
}