Как установить несколько заданий cron?

Приведенный ниже код для установки нескольких заданий cron одновременно с использованием шеллскрипта

#!/bin/bash
    file="/home/admin/Desktop/crontab.sh"
    file1="/home/admin/Desktop/crontab1.sh"
    file2="/home/admin/Desktop/crontab2.sh"
    file3="/home/admin/Desktop/crontab3.sh"
    echo "$1 $2 $3 $4 $5 $file" >> cron.new
    echo "$6 $7 $8 $9 $10 $file1" >> cron.new
    echo "$11 $12 $3 $14 $15 $file2" >> cron.new
    echo "$16 $17 $18 $19 $25 $file3" >> cron.new
    cat cron.new
    crontab cron.new

1 ответ

Решение

Bash позиционные параметры начинаются с 0 конец в 9, И поэтому вы должны отправить все ваши позиционные параметры в качестве одного аргумента. т.е. заключать все параметры в одинарные или двойные кавычки.

Ниже программа поможет вам.

#!/bin/bash

files=("/home/admin/Desktop/crontab.sh" "/home/admin/Desktop/crontab1.sh" "/home/admin/Desktop/crontab2.sh" "/home/admin/Desktop/crontab3.sh")
args=($(echo $1))

for file in ${files[@]}
do
    list=(${args[@]:0:5})
    args=(${args[@]:5})

    for i in $(seq 0 4)
    do
        cmd="${cmd} ${list[$i]}"
    done

    echo "$cmd $file"
    cmd=''
done

Выход:

$ ./test.sh '1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20'
 1 2 3 4 5 /home/admin/Desktop/crontab.sh
 6 7 8 9 10 /home/admin/Desktop/crontab1.sh
 11 12 13 14 15 /home/admin/Desktop/crontab2.sh
 16 17 18 19 20 /home/admin/Desktop/crontab3.sh

Здесь числа передаются как один аргумент, заключая их в одинарные кавычки. Имена файлов помещаются в массив для легкого доступа.

Другие вопросы по тегам