Linux에서 쉘 스크립팅에 대한 질문이 있습니다. 나는이 코드가 몇 시간 동안 작동하도록 노력해 왔으며 이해가되지 않는 부분을 수행합니다. 이 코드의 목적은 사용자에게 csv 파일의 이름, gecos 및 그룹 값을 추가하는 것입니다. CSV 파일은 다음과 같이 포맷 : 그런 식으로 디버깅하기 쉬웠다로Linux scipt 변수가 올바르게 인식되지 않습니다.
U12341;Mario Speedwagon;docent
U12342;Petey Cruiser;classA
이 내 코드입니다, 내가 useradd와 일시에 그룹 기능을 제거했습니다. 그것은`그룹에 대한 잘못된 이름이었습니다. 그래서 나는 화면에 변수를 넣으려고했는데 아주 이상한 것으로 나타났습니다.
)n login (u12341), in gecos (Mario Speedwagon) en in groep (docent
useradd: user 'u12341' already exists
User u12341 is toegevoegd onder de naam Mario Speedwagon in groep docent
)n login (u12342), in gecos (Petey Cruiser) en in groep (classA
useradd: user 'u12342' already exists
문자열의 첫 번째 문자를 통해 $ 그룹 후 문자를 넣어 것 같다
for actie in `more +2 users.csv | tr " " "_"`
do
login=`echo $actie | tr ";" ":" | cut --delimiter=: --field=1 | tr '[A-Z]' '[a-$
groep=`echo $actie | tr ";" ":" | cut --delimiter=: --field=3`;
gecos=`echo $actie | tr ";" ":" | cut --delimiter=: --field=2 | tr "_" " "`;
echo "In login ($login), in gecos ($gecos) en in groep ($groep)"
sudo useradd $login -c "$gecos"
echo "User $login is toegevoegd onder de naam $gecos in groep $groep"
done
이
는 이상한 출력했다. 나는 그룹 이름과 같은 변수를 사용하여 내 문제는 정확히 동일하다고 생각합니다.다른 모든 것은 잘 작동하는 것처럼 보입니다. 그룹 코드없이 스크립트를 실행하면 사용자에게 올바른 gecos 데이터가 추가됩니다.
이전에 누군가에게 이와 같은 문제가 발생 했습니까? 미리 감사드립니다.
실례로 문제가있는 것으로 보이는 귀하의 예를 시험해 보았습니다. 텍스트 편집기에 표시되지 않기 때문에 삭제 방법을 찾을 수 있는지 보겠습니다. 편집 : 내가 말한 것처럼 파일 복사를 시도했지만 문제가 여전히 발생합니다. –
어느 쪽이든 나는 CSV 파일을 변경할 수 없다고 생각합니다. –
'groep' 변수를 얻는 파이프 끝에'tr -d '\ r "를 사용할 수 있습니다. – iamnotmaynard