이것은 내 테스트 bash 스크립트입니다. 나는 그것을 작동시킬 수 없습니다. 두 가지 오류가 표시됩니다.
Use of uninitialized value $answer in chop at /usr/sbin/adduser line 589.
Use of uninitialized value $answer in pattern match (m//) at /usr/sbin/adduser line 590.
이것은 내 스크립트입니다.
#!/bin/bash
sudo adduser myuser << ENDX
password
password
First Last
Y
ENDX
exit 0
출력은 다음과 같습니다.
me@mycomputer$ ./adduser.sh
Adding user `myuser' ...
Adding new group `myuser' (1001) ...
Adding new user `myuser' (1001) with group `myuser' ...
Creating home directory `/home/myuser' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
Changing the user information for myuser
Enter the new value, or press ENTER for the default
Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Use of uninitialized value $answer in chop at /usr/sbin/adduser line 589.
Use of uninitialized value $answer in pattern match (m//) at /usr/sbin/adduser line 590.
Is the information correct? [Y/n] me@mycomputer$
이것은 Kubuntu 12.04 LTS에 있습니다.
$ bash --version
bash --version
GNU bash, version 4.2.25(1)-release (x86_64-pc-linux-gnu)
다음은 두 관련 줄 번호에 대한 기호를 포함하는 adduser(시스템 스크립트 - 제가 수정하지 않음)의 줄입니다.
for (;;) {
my $chfn = &which('chfn');
&systemcall($chfn, $new_name);
# Translators: [y/N] has to be replaced by values defined in your
# locale. You can see by running "locale yesexpr" which regular
# expression will be checked to find positive answer.
print (gtx("Is the information correct? [Y/n] "));
chop (my $answer=<STDIN>); <-- LINE 589
last if ($answer !~ m/$noexpr/o); <-- LINE 590
}
답변1
stdin 대신 명령줄 인수를 사용하고 비밀번호로 chpasswd를 사용하세요.
예를 들어:
sudo adduser myuser --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
echo "myuser:password" | sudo chpasswd
답변2
adduser
chfn
전체 이름 및 기타 사용자 정보를 읽으려면 외부 프로그램을 호출하십시오 . chfn
필요한 것뿐만 아니라 마지막 줄도 포함하여 버퍼의 입력을 읽습니다 Y
. adduser
나중에 확인을 요청 하면 해당 Y
행을 읽었으므로(그러나 무시됨) 입력 시 파일 끝이 표시됩니다 chfn
. adduser
이 변수는 $answer
입력 라인을 포함해야 하지만 읽을 입력이 없으므로 정의되지 않습니다.
스크립트를 작성하고 있기 때문에명령줄에서 데이터(비밀번호 제외) 전달.