디렉터리와 사용자를 생성한 다음 생성된 사용자에게 이 생성된 디렉터리에 대한 권한을 부여합니다.

디렉터리와 사용자를 생성한 다음 생성된 사용자에게 이 생성된 디렉터리에 대한 권한을 부여합니다.

쉘 스크립팅을 배우고 싶습니다. 여러분의 도움이 필요합니다.

질문:내 스크립트는 먼저 내 실수가 어디에 있는지 모르겠습니다.

내 코드

#!/bin/bash
echo "Please create a directory Name! "
read dn
cd
mkdir /home/$dn
ls /home


echo write the user Name!
read usrnm

if [ `sed -n "/^$usrnm/p" /etc/passwd` ]
then
    echo "the user $usernm" exists already
else
    useradd -M $usernm
    chown -R $usernm /home/$dn
    chmod -R u+rX /home/$dn
    echo $usernm is being successfully created!
    #cat /etc/group
fi

귀하의 친절한 피드백에 진심으로 감사드립니다!

답변1

스크립트에는 많은 문제가 있습니다.

5행 mkdir /home/$dn- 사용자 입력에 공백이 포함되어 있으면 이상한 일이 발생할 수 있으므로 mkdir "/home/$dn".

9호선, echo write the user Name!좋지 않아요. "!" 문자는 bash에서 특별한 의미를 가지므로 스크립트에서는 그대로 사용하지 않습니다. 이번에도 따옴표를 추가해 주세요.echo 'write the user Name!'

10번째 줄에서는 usrnm그것을 읽은 다음 큰따옴표 없이 사용합니다. 이는 매우 나쁜 일이며 16번째 줄에서는 다음을 사용합니다.다른바꾸다 usernm.

sed 명령을 더 관리하기 쉽고 간단한 명령으로 대체했습니다.

고정된 스크립트는 다음과 같습니다.


#!/bin/bash
echo "Please create a directory Name! "
read dn
cd
mkdir "/home/$dn"
ls /home

echo 'write the user Name!'
read usrnm

if grep -qw "$usrnm" /etc/passwd 2>/dev/null
then
    echo "the user $usernm" exists already
else
    useradd -M "$usrnm"
    chown -R "$usrnm" "/home/$dn"
    chmod -R u+rX "/home/$dn"
    echo $usrnm is being successfully created!
fi

관련 정보