Похоже, вы запустили задание cron sh или dash вместо bash (В Ubuntu есть разница между bash и sh... Я не знаю, так ли это до сих пор ). Вы должны иметь возможность проверить это с помощью ps ux
, когда ваш cron -tmux запущен.
Если был запущен настоящий bash, возможно, он неsource ~/.bashrc
:не пытался /bin/bash -i
или вручную не загрузил его в ваш сценарий.
Кроме того, в рамках задания cron среда обычно минимальна. Введите env
в своем сеансе tmux, чтобы увидеть, что доступно, это может дать вам подсказку.
Если ваш cron запущен от имени пользователя root (, о котором вы не упомянули, поэтому я предположил, что он пользователь ), его bashrc может быть минимальным или отсутствовать, отсюда и уродливая командная строка.
с bash
у вас уже есть решение, и оно требует двух назначений, но если вам просто нужен вывод, вы можете опустить второе присвоение и напрямую вывести результат как bash
, но не поддерживает подстановку вложенных параметров (возможно в будущем будет ).
$ mac='11:22:33:44:55:66'
$ vendor=${mac//:}
$ echo ${vendor::6}
Или используйте cut
вместо краткого:
cut -d: -f1,2,3 --output-delimiter= <<<"$mac"
Вы также можете использовать awk
:
$ mac=11:22:33:44:55:66
$ echo "$mac" | awk -F':' '{ print $1""$2""$3}'
112233
О расширении вложенных параметров см. этот ответ:
Может ли расширение параметра работать внутри другого расширения параметра?