Вы можете использовать это с переменной флага, например.добавить флаг в командную строку:
use_x=1
param_x=foobar
somecmd ${use_x:+-x} ${use_x:+$param_x}
Конечно, часть с param_x
не такая уж хорошая идея, так как она подвержена разбиению на слова -и подстановке. Однако это не должно быть проблемой для самого статического флага, но в целом использование массива здесь было бы более надежным.
Чтобы проверить, установлена ли переменная, [ -n "$var" ]
работает аналогичным образом, поэтому ${var:+value}
не так много пользы. С другой стороны,${var+value}
(без двоеточия )полезно указать разницу между пустой и неустановленной переменной :
unset a
b=
[ "${a+x}" = "x" ] && echo a is set
[ "${b+x}" = "x" ] && echo b is set
Kindly add the script in /etc/profile.d
Если вы хотите, чтобы он был специфичным для пользователя, пожалуйста, добавьте его ниже, чтобы он выполнялся при входе пользователя в систему
/home/username/.profile
Ubuntu 19.04 использует systemd
, поэтому предпочтительным способом для таких сценариев будет использование службы sysd -.
Для этого вам понадобятся два файла :1 )тот script.sh
, который вы уже написали (Я предполагаю, что он проверен и работает )и 2 )модульный файл, определяющий службу systemd.
Примером последнего может быть:
[Unit]
Description=Service to check for external monitors during boot.
[Service]
Type=Simple
ExecStart=/bin/bash /path/to/your/monitor/script.sh
[Install]
WantedBy=multi-user.target
Description
и ExecStart
должны говорить сами за себя -пояснения, Type=Simple
означает, что сценарий должен запускаться только один раз (, а не каждые X секунд или около того )и WantedBy=multi-user.target
заставляют его запускаться после того, как вы «нормальная» загрузка (без выключения, без режима восстановления и необязательной графики ). Конечно, вы можете сделать скрипт исполняемым и не добавлять /bin/bash
в строку ExecStart
-.
Сценарий переходит к /etc/systemd/system
, например. по имени monitor-check.service
обратите внимание, что суффикс.service
-обязателен! Установите владельца на root
и разрешения на 644
.
Вы можете протестировать сервис,
systemctl start monitor-check
или
service monitor-check start
и проверьте состояние, заменив start
на status
в приведенных выше командах.
Чтобы включить использование сервиса загрузки:
systemctl enable monitor-check.service
Если вы теперь посмотрите на service monitor-check status
, вы должны прочитать enabled
в строке Loaded:
-.
Разумеется, сам скрипт должен принадлежать пользователю root и иметь644
-разрешения из соображений безопасности. Лучше всего хранить его в новых каталогах, таких как, например. /etc/my_scripts
или /etc/systemd/my_scripts
.
После перезагрузки вы можете использовать статус службы, чтобы проверить ее код выхода.