Я пытался написать команду (сервер Solaris), которая добавляет пользователя в определенную группу. Это довольно длинная команда, поэтому я опубликую всю команду здесь, а затем разбью ее.
USER=myUser && sudo /usr/sbin/usermod -G `awk -v delim="," -F: '/[:,]'$USER'/ { groups = groups $1 delim; } END { groups = groups "myGroup"; print groups}' /etc/group` myUser
Внутренняя команда awk составляет список текущих групп, разделенных запятыми, а внешняя команда принимает этот список в параметре -G.
И awk, и usermod выдают мне синтаксические ошибки (рядом со строкой 1, но есть только одна строка), но я чувствую, что одна ошибка вызвана другой.
Есть ли здесь какие-то явные синтаксические ошибки, которые мне не хватает? Может ли это быть вызвано проблемой оболочки? В качестве отказа от ответственности я использую конструкцию && вместо точки с запятой из-за некоторых проблем обработки текста более высокого уровня, но это, по моему мнению, не должно влиять на выполнение (я проверял это).