ディレクトリとユーザーを作成し、生成されたユーザーにこの生成されたディレクトリに対する権限を付与します。

ディレクトリとユーザーを作成し、生成されたユーザーにこの生成されたディレクトリに対する権限を付与します。

シェルスクリプトを学びたいです。あなたの助けが必要です。

質問:私のスクリプトは、まず私の間違いがどこにあるのかわかりません。

私のコード

#!/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

おすすめ記事