передача переменных env командам в bash [дубликат]

Как указано в руководстве

crontab -l

перечисляет crontab для текущего пользователя

/var/spool/cron/root

, если вы являетесь пользователем root.

crontab -u other -l

для другого пользователя. Отредактируйте crontab с помощью

crontab -e

Формат:

#.---------------- minute (0 - 59)
#|      .------------- hour (0 - 23)
#|      |       .---------- day of month (1 - 31)
#|      |       |       .------- month (1 - 12) OR jan,feb,mar,apr ...
#|      |       |       |       .---- day of week (0 - 6) (Sunday=0 or 7)  OR sun,mon,tue,wed,thu,fri,sat
#|      |       |       |       |
#*      *       *       *       *       the command to be executed

0       */2     *       *       *       /every2h.sh

В дополнение к этому существует также

find  /etc/cron* -type f

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

2
16.02.2017, 16:10
2 ответа

При запуске

FILE='/tmp/1.txt' echo "file: $FILE"

оболочка расширяет переменную $FILE перед выполнением присваивания, поэтому, предполагая, что FILE ранее не был установлен, вы получите:

FILE='/tmp/1.txt' echo "file: "

Вы можете подтвердить это поведение, установив сначала известное значение FILE:

FILE="foo"
FILE='/tmp/1.txt' echo "file: $FILE"

Вторая строка расширяется до:

FILE='/tmp/1.txt' echo "file: foo"

Затем значение FILE в контексте этой команды изменяется на /tmp/1.txt. Затем оболочка выполняет echo "file: foo"

Как упомянул @admstg в своем ответе, вы можете сделать:

FILE='/tmp/1.txt'; echo "file: $FILE"

Но это поведение отличается от того, что вы изначально пытались сделать. То, что у вас было изначально, устанавливает FILE только на время команды echo; вышеприведенное устанавливает его на время работы оболочки (или до тех пор, пока он не будет явно отключен).

8
27.01.2020, 21:53

Вы должны разделить две команды с помощью; чтобы затем определить переменную, вызвав ее.

Поскольку вы вызываете переменную в той же оболочке, вам не нужно экспортировать переменную.

Это должно работать:

FILE='/tmp/TEST.txt' ;  echo "file : $FILE"
1
27.01.2020, 21:53

Теги

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