Попробуйте это,мы можем удалить суффикс 3 символа, используя приведенный ниже код
find. -maxdepth 1 -mindepth 1 -name '*-v4' -type d -execdir bash -c 'mv "$1" "${1%???}"' mover {} \;
Вы не говорите нам, как это терпит неудачу, но я предполагаю, что вы не видите, как это выполняется.
Во-первых, ваш сценарий никогда не будет работать, так как while($true)
недопустимый синтаксис оболочки. Я предполагаю, что вы хотите что-то вроде этого:
true=1
while(($true)); do... ; done
Более распространенная идиома для этого:
while : ; do... ; done
Или(true
это команда):
while true; do... ; done
Скорее всего, это связано с тем, что вы используете относительные пути в своем скрипте.:
./transfermysql.sh > file.txt
Замените его полным путем:
/path/to/transfermysql.sh > /path/to/file.txt
Далее, я также подозреваю, что bcp
не находится в PATH cron,так что используйте полный путь к этому:
/path/to/bcp tablename in file.txt -S ***********.com,**** -U **** -P *********** -d ********* -c
Наконец, я не знаю, зачем вам нужен :> file.txt
, так как ваша первая команда все равно перезаписывает свое содержимое, но если вам по какой-то причине это нужно, вам также нужно использовать полный путь:> /path/to/file.txt
.
Задания, выполняемые через cron
, at
или batch
, не выполняются в той же среде выполнения, что и на вашем рабочем столе. Ни одно из ваших изменений PATH
или других настроек переменных среды не распространяется автоматически на ваше задание cron
. Например, $DISPLAY
нет, поэтому программы с графическим интерфейсом требуют специальной обработки (читатьman xhost
).
Можно установить переменные среды для всех своих cron
заданий в файле crontab
. Прочтите man 5 crontab
.
Посмотрите на результаты echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias
в каждой из ваших сред.
Поскольку часть command
строки crontab
по умолчанию интерпретируется как /bin/sh
, который имеет более простой синтаксис, чем /bin/bash
, я рекомендую, чтобы command
был вызовом bash
исполняемый файл сценария (, смонтированный, начинается с #!/bin/bash
), который настраивает среду, а затем вызывает нужную программу.