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