서버에 누가 있는지에 대한 Bash 사용자 입력 검색 문 오류가 너무 많은 인수인 경우

서버에 누가 있는지에 대한 Bash 사용자 입력 검색 문 오류가 너무 많은 인수인 경우

서버에서 현재 사용자를 검색하기 위해 사용자 입력을 수락해야 하는 과제를 수행 중이며, 사용자 입력이 온라인인 경우 사용자 이름을 출력해야 합니다. 사용자가 로그인하지 않은 경우 이에 따라 응답해야 합니다. 나는 며칠 동안 이 코드를 작업해 왔지만 그것을 알아낼 수 없는 것 같습니다. 사용자를 검색할 수 있지만 사용자 입력 변수 문자열을 로그인한 사용자 이름이 포함된 변수 문자열과 비교할 때 인수가 너무 많다는 오류가 계속 발생합니다. 아래 내 코드를 참조하십시오.

#!/bin/bash
read -p "Please enter the user name you would like to search: " userName
name=$(who | grep "${userName}" | awk '{print $1}');
if  [ [  $name == *"$userName"* ] ];
then
        echo $name
else
        printf "That user is not logged in.\n";
fi

답변1

가깝지만 주요 문제는 bash [[ ]]구성이 대괄호 사이에 공백을 가질 수 없다는 것입니다. [POSIX 명령인 여러 명령을 수행하려고 하는 것 같습니다 test. 문제를 해결하면 작동하지만 사용자가 여러 개의 tty를 열어 놓은 경우 각 tty에 대해 이름이 한 번씩 인쇄됩니다. 를 사용하려면 grep다음과 같이 하세요.

#!/bin/bash

read -p "Please enter the user name you would like to search: " userName
if who | awk '{print $1}' | grep -wq "$userName"
then
  echo "$userName is logged in."
else
  echo "That user is not logged in.";
fi

exit

관련 정보