Я пытаюсь написать сценарий bash, который выполняется через «./filename username» и проверяет, зарегистрирован ли этот пользователь, распечатывает результат. Я все еще новичок в написании сценариев, и мне трудно понять, как это сделать.Сценарий Beginner's Bash: ошибка «Unary Operator Expected» && как использовать grep для поиска переменной из вывода команды?
В настоящее время я получаю сообщение об ошибке «строка 7: [: ambonill: ожидается унарный оператор». Что это значит и как я могу исправить эту ошибку?
Кроме того, как бы я получил grep для работы вместо сортировки | уник? Я хотел бы grep для переменной из вывода команды, но не могу найти ничего связанного на странице руководства.
#! /bin/bash
# This script will take a username as an argument and determine whether they are logged on.
function loggedin {
for u in `who | cut -f1 -d" " | sort | uniq`
do
if [ $u == $1 ]
then
echo "$1 is logged on"
else
echo "$1 is not logged on"
fi
exit 0
done
}
loggedin $u
exit 1
Вы называете 'loggedin' с' $ u', но '$ u' не установлен в любом месте. –
Проверьте свой код с помощью shellcheck.net. – chepner
Для 'grep': Я думаю, что вы ищете' grep -o', но 'sort | uniq' (или 'sort -u') отличается. –