Использовать подстроки имени файла в качестве параметров в цикле for, который создает команду aws

Задачи Cron запускаются с /bin/sh и пустой средой, поэтому иногда вам может понадобиться получить ваш профиль bash или какой-либо другой файл среды или, при желании, включить переменные среды в файл cron. PATH обычно является самым большим преступником. По умолчанию путь установлен в /usr/bin :/bin, поэтому, если ваш скрипт ссылается на какие-либо исполняемые файлы, которые не находятся в этих двух каталогах, без полного пути, ваш cron не будет работать. Вы можете установить любую переменную среды в crontab с помощью простого KEY=VALUE, например

PATH=/usr/bin:/bin:/usr/local/bin
-1
13.03.2020, 11:37
2 ответа

Учитывая файл «_date=2017 -05 -04», ваш цикл for установит для переменной fileзначение /home/ec2-user/clickparts/the_date=2017-05-04. Если вы возьмете 4 символа из 9-го символа, вы получите -use, что вы видите там, где используется ваша переменная year.

Один из способов исправить это — принять во внимание количество символов в вашем пути и добавить количество символов (, в данном случае 26 ), к каждому из начальных чисел при установке года, месяца и дня. переменные.

Другой способ может состоять в том, чтобы перейти в соответствующий каталог перед циклом for (и вернуться обратно после его завершения ), тогда ваш цикл for станет for file in t*; do, который установит вашу переменную fileв то, что я поверьте, вы ожидаете.

1
28.04.2021, 23:20

Вы также можете запустить его через базовое имяfilename="$(basename -- "$file")"

1
28.04.2021, 23:20

Теги

Похожие вопросы