이 스크립트에서 쓰레기는 무엇을 하는가?

이 스크립트에서 쓰레기는 무엇을 하는가?

나는 교수님으로부터 이 Linux 스크립트를 받았고 그것이 무엇을 하는지 이해하려고 노력하고 있으며, 그것이 무엇을 하는지 대부분 알고 있다고 생각합니다. 그런데 한 가지 헷갈리는 부분이 있었습니다. junk이 줄의 기능은 무엇입니까?

who | while read user junk

그 목적은 무엇입니까? 인터넷 검색을 시도했지만 쓰레기 문자를 인용하는 것 외에는 찾을 수 없는 것 같고, 내가 아는 한 그것은 별개의 것입니다. 전체 스크립트는 다음과 같습니다.

#!/bin/bash
#Run a while loop using input of user command
who | while read user junk
do
   #Get users real name from /etc/passwd file
   realname=`grep $user /etc/passwd | cut -d: -f5`
   echo "User: $realname ($user)"
   #Get user's logged in time using who command
   loggedin=`who | grep $user | awk '{print $3" "$4}'`
   echo "Logged in: $loggedin"
   #Get home directory of the user from /etc/passwd file
   homedir=`cat /etc/passwd | grep $user | cut -d":" -f6`
   echo "Home Directory is $homedir"
   #Get count of all files in user's home directory
   #including sub-directories (excluding directory count) using find command
   file_dir_count=`find $homedir -type f | wc -l`
   echo "Home directory contains $file_dir_count files"
   #Get user's processes count using ps command
   proc_count=`ps -u $user --no-headers | wc -l`
   echo "$user has $proc_count processes"
   #Display user's top 7 memory using process list in given order using top
   echo "Top 7 processes sorted by Memory Usage:"
   top -b -n 1 -u $user -o %MEM | head -14 | tail -8 | awk '!($3="")'
done

답변1

read스크립트에서 사용되는 방식은 출력의 각 줄의 첫 번째 단어를 who변수로 읽어들이는 것을 의미합니다 user.나머지 줄(첫 번째 공백이나 탭에서) 변수에 junk.

기본적으로 문자(공백, 탭, 줄 바꿈)로 구분된 단어는 나열된 각 변수로 read읽혀집니다 . $IFS나열된 마지막 변수는 이전 변수에 단어를 할당한 후 남은 데이터를 가져옵니다.

이는 각 줄의 첫 번째 단어만 읽는 저렴한 방법입니다.

바라보다""IFS=read-r-line" 이해" 자세한 내용은.


스크립트에는일부질문. 예를 들어, 사용자의 사용자 이름이 서로의 하위 문자열(예: 및 )인 경우 bill잘못된 결과(오류일 가능성이 높음)가 발생합니다 billy. 사용자 파일의 파일 이름에 개행 문자가 있는 경우에도 잘못된 결과가 생성됩니다.

또한 수행합니다who 다시read또한 이 정보가 초기화를 통과했을 가능성이 있더라도 각 사용자에 대해 해당 초기 명령 /etc/passwd의 각 출력 줄을 여러 번 읽습니다.who

처리를 정보 수집 부분으로 나누는 것이 좋습니다( 정보를 getent passwd "$user"얻기 위해 단일 호출을 사용하지만passwd아니요주로 대화형 모니터링 도구를 사용 top하고 별도의 보고 섹션(출력용)을 사용합니다. 공백(예: 빈 줄)을 사용하면 가독성도 향상될 수 있습니다.

관련 정보