Как установить несколько заданий 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
Здесь числа передаются как один аргумент, заключая их в одинарные кавычки. Имена файлов помещаются в массив для легкого доступа.