Вы можете распечатать значения (с начальным пробелом )с:
$ echo "{{1,department}}" | awk -F '[ {},]' 'NF=NF'
1 department
Это позволит прочитать значения:
read val1 val2 <<<$(echo "{{1,department}}" | awk -F '[ {},]' 'NF=NF')
Это будет работать для одной скобки и любых дополнительных полей.:
$ echo "{{1,department,name,list}}" | awk -F '[ {},]' 'NF=NF'
1 department name list
Аналогичное решение возможно с grep:
$ echo '{1,department}' | grep -Po '(?<={|,)[^{,}]*(?=,|})'
1
department
$ echo '{{1,department}}' | grep -Po '(?<={|,)[^{,}]*(?=,|})'
1
department
$ echo '{{1,department,name,list}}' | grep -Po '(?<={|,)[^{,}]*(?=,|})'
1
department
name
list
Из переменной в оболочке должно совпадать точное количество полей:
$ value='{{1,department}}'
$ re='\{\{([^},]*),([^}]*)\}\}'
$ [[ $value =~ $re ]] && echo "${BASH_REMATCH[@]:1}"
1 department
Что-то, что нужно сначала прояснить, чтобы мы могли прийти к правильному решению, а не к тому, что вы пытаетесь сделать:
sudo command
, либо становитесь root с sudo -i
. Это означает, что регистрация в качестве пользователя root на последовательной консоли невозможна и должна оставаться такой. Если вы хотите войти в систему root без sudo
на случай, если ваш /home
не работает, у вас, вероятно, также есть пара других проблем. В этом случае я бы предложил загрузиться с живого -носителя, таким образом вы также можете дать себе все необходимые разрешения для решения проблемы (s ).
Я предлагаю использовать PAM для установки этих ограничений. Скорее всего, у вас есть файл с именем /etc/pam.d/login, который используется процессом входа в систему, порожденным getty, работающим на ttyS0.
Вероятно, он включает в себя один из общих файлов аутентификации, так что вы можете просто заблокировать в нем все, что имеет uid > 0.
Вы также можете использовать pam _access access.conf , чтобы ограничить только root для ttyS0.