이름이 포함된 데이터 파일이 있습니다. 그룹이나 비밀번호 없이 추가해야 하는 사용자 이름입니다. 물론 모든 공백을 제거해야합니다. bash 스크립트를 사용하여 추가해야 합니다. 누구든지 스크립트 작성을 도와줄 수 있나요?
문서:
Marianne Earman
Justina Dragaj
Mandy Mcdonnell
Conrad Lanfear
Cyril Behen
Shelley Groden
Rosalind Krenzke
Davis Brevard
Winnie Reich
Trudy Worlds
Deshawn Inafuku
Claudio Loose
Sal Pindell
Cristina Sharper
Tricia Kruss
내 스크립트:
#!/bin/bash
#users.dat | sed "s/\t\t*/ /g"
while read p; do
#var=$(echo $p | sed "s/\t\t*/ /g")
var= echo $p | sed '/^$/d;s/[[:blank:]]//g'
#sudo useradd $var
sudo useradd $var
done < users.dat
답변1
이 작업은 단일 파이프라인에서 수행할 수 있습니다. 입력에서 각 줄을 xargs
실행 하면 됩니다.useradd
sed '/^[[:space:]]*$/d; s/[[:space:]]//g' users.dat |
xargs -I{} echo {}
올바른 일을 하고 있다고 확신할 때 로 바꾸세요 echo
.useradd
또한 Debian 기반 시스템(예: Ubuntu, Linux Mint)에 대해 이 코드를 작성하는 경우 adduser
대신 사용을 고려해야 합니다 useradd
.adduser는 수행하지만 useradd는 수행하지 않는 작업은 무엇입니까?
답변2
echo
명령을 실행하기 전에 출력을 변수에 추가해야 합니다 . 이렇게 하면 이제 이전 명령의 출력이 표시됩니다. 아래 스크립트를 시도해 보세요. 잘 작동할 겁니다.var
$
var
#!/bin/bash
while read p; do
var=$(echo $p | sed '/^$/d;s/[[:blank:]]//g')
echo $var
#sudo useradd $var
done < users.dat