debian10의 1개 그룹에 여러 사용자 추가

debian10의 1개 그룹에 여러 사용자 추가

vi 사용자 목록.txt

Tom
Josh
Noah

vi addgroup.sh

#!/bin/bash
for user in 'cat userlist.txt'
do
sudo usermod -a -G vncuser $user
done

sh addgroup.sh

Usage usermod [options] LOGIN

"usermod [옵션] 로그인 사용" 오류를 어떻게 해결하나요? 죄송합니다. 저는 초보자입니다. 미리 감사드립니다!.

답변1

파일 내용이 아닌 "cat userlist.txt"를 반복하고 있습니다. 즉, $user는 "cat", "userlist.txt"와 동일합니다. 다음과 같은 로그 줄을 추가할 수 있습니다.

echo "Adding user '$user' to group vncuser"

해결 방법: command$(command)와 같은 백틱 또는 달러 괄호 형식을 사용하세요. 나는 읽기가 더 쉽기 때문에 두 번째 것을 선호합니다.

for user in $(egrep -v "^#|^$" userlist.txt); do
  echo "Adding user '$user' to group 'vncuser'"
  sudo usermod -a -G vncuser $user
done

내가 여기서 뭘 한 거지? #으로 시작하는 줄과 빈 줄을 필터링하기 위해 egrep을 사용했습니다.

답변2

각 줄 변수를 큰따옴표로 묶습니다.

while IFS= read -r line
do
  sudo usermod -a -G vncuser "$line"
done <userlist.txt

그런 다음 실행하기 전에 a를 수행하십시오 chmod +x filename.sh.

답변3

$()첫 번째 단계: 역따옴표(동시 따옴표 아님) 또는 연산자 만 사용해야 합니다.

for user in $(cat userlist.txt) do
  sudo usermod -a -G vncuser $user
done

그 외에도 빈 줄이 나타날 수 있으므로

for user in $(cat userlist.txt) do
  test -n "$user" && sudo usermod -a -G vncuser $user
done

그리고 마침내 '고양이'를 없애세요

while read user ; do
  test -n "$user" && sudo usermod -a -G vncuser $user
done <userlist.txt

관련 정보