Ошибка возникает из-за того, что $( echo id -g $user )
будет развернуто в слова id -g username
. Это нельзя сравнивать с 101
, так как расширение не заключено в кавычки.
Чтобы сравнить вывод id -g "$user"
(, обратите внимание на двойные кавычки ), используйте
if [ "$( id -g "$user" )" = "101" ]
Внутри [... ]
вы должны использовать один =
для сравнения строк. В оболочках с [[... ]]
вы можете использовать==
:
if [[ $( id -g "$user" ) == "101" ]]
Здесь заключение команды подстановки в кавычки не требуется, но это необходимо, если вы используете [... ]
.
Идиоматический способ выполнения такого рода задач состоит в том, чтобы не сохранять выходные данные конвейера who
в переменной, а передавать их непосредственно в цикл:
who | awk '{ print $1 }' | sort -u |
while read user; do
if [ "$( id -g "$user" )" = "101" ]; then
echo 'Got it'
fi
done
Вы можете подключиться по SSH к машине с Windows. В него нужно установить ssh-сервер. Вы можете установить сервер Openssh на Windows 10 и Windows Server 2019, как описано в этом официальном документе от Microsoft -https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse. После установки сервера Openssh на компьютере с Windows и его настройки вы можете подключиться к компьютеру с Windows по ssh.
Вы можете получить доступ к компьютеру Mac с помощью SSH. Об удаленном доступе по ssh к машине с Mac OS ответ здесь-https://superuser.com/questions/104929/how-do-you-run-a-ssh-server-on-mac-os-x
Да, это возможно.