Вы не должны ничего добавить к /etc/sudoers.d/! Это просто лишний и опасный (как видите). Все пользователи admin (включая учетную запись пользователя по умолчанию, которая создается во время установки) уже разрешено использовать sudo для запуска команд с привилегиями root.
Еще раз удалите файл /etc/sudoers.d/ken и верните все изменения, которые вы возможно,
pkexec rm /etc/sudoers.d/ken
. Вы можете использовать pkexec как временную замену для sudo, чтобы исправить проблемы, пока это не работает: pkexec rm /etc/sudoers.d/ken
Пользователи Admin на Ubuntu определяются своим членством в группе sudo (ранее admin).
Когда вы добавляете новых пользователей admin через GUI Unity Control Center, это будет позаботьтесь об этом членстве в группах автоматически.
Когда вы добавляете нового пользователя из терминала с помощью sudo adduser USERNAME, он не будет членом какой-либо дополнительной группы. В этом случае вам нужно добавить эти две группы вручную, чтобы сделать учетной записи администратором, которому разрешено использовать sudo:
sudo adduser USERNAME sudo
И в редком случае, когда вам действительно нужно будет отредактировать /etc/sudoers или файл в /etc/sudoers.d/, никогда не делайте этого вручную, но ** всегда используйте sudo visudo для его редактирования! Эта команда проверяет файлы и проверяет наличие ошибок, прежде чем применять изменения и не даст вам разобраться с командой sudo.
С bash:
array=("a b" "c d")
for ((i=0; i<${#array[@]}; i++)); do
if [[ ${array[$i]} == "a b" ]]; then
echo "Element $i matched"
fi
done
Выход:
Element 0 matched${#array[@]} содержит номер последнего элемента в массиве.
Когда вы печатаете элементы массива каждый в новой строке, вы можете использовать grep:
printf '%s\n' "${array[@]}" | grep "a b"
Если элементы массива содержат \n, лучше использовать \0 и grep -z ( спасибо @muru):
printf '%s\0' "${array[@]}" | grep -z "a b"
Этот SO Q & amp; A предлагает способ выполнить поиск
Реализация для вашего вопроса:
#!/bin/bash
array=("a b" "c d")
value="a b"
if [[ " ${array[@]} " =~ " ${value} " ]]; then
echo found $value
fi
Выход:
found a b
С bash:
array=("a b" "c d")
for ((i=0; i<${#array[@]}; i++)); do
if [[ ${array[$i]} == "a b" ]]; then
echo "Element $i matched"
fi
done
Выход:
Element 0 matched${#array[@]} содержит номер последнего элемента в массиве.
Когда вы печатаете элементы массива каждый в новой строке, вы можете использовать grep:
printf '%s\n' "${array[@]}" | grep "a b"
Если элементы массива содержат \n, лучше использовать \0 и grep -z ( спасибо @muru):
printf '%s\0' "${array[@]}" | grep -z "a b"
Этот SO Q & amp; A предлагает способ выполнить поиск
Реализация для вашего вопроса:
#!/bin/bash
array=("a b" "c d")
value="a b"
if [[ " ${array[@]} " =~ " ${value} " ]]; then
echo found $value
fi
Выход:
found a b