ファイルからオペレーティングシステムにユーザーを追加する

ファイルからオペレーティングシステムにユーザーを追加する

オペレーティングシステムにユーザーを追加するプロジェクトがあり、これらのユーザーはテキストファイルにあります。これまでこれを書いていますが、うまくいきません。 useraddが正しく機能していないというメッセージが表示されます。何が問題なのか教えてもらえますか?

ファイルの内容は次のとおりuser.txtです。

charbel:password:1001:1001:Charbel Haddad:/home/charbel:/bin/bash:0:30:15:7:y
assil:p@ssw0rd:1002:1002:Assil:/home/assel:/bin/bash:0:30:10:5:n
marwan:p@ssw0rd:1003:1003:Marwan Ghantous:/home/marwan:/bin/bash:0:50:30:7:n
michel:password:1004:1004:Michel:/home/michel:/bin/bash:1:30:10:5:y

スクリプト:

FILE="user.txt"

USERNAME=$(cut -d ":" -f 1 $FILE)
PASSWORD=$(cut -d ":" -f 2 $FILE)
USER_ID=$(cut -d ":" -f 3 $FILE)
GROUP_ID=$(cut -d ":" -f 4 $FILE)
USER_INFO=$(cut -d ":" -f 5 $FILE)
HOME_DIRECTORY=$(cut -d ":" -f 6 $FILE)
SHELL=$(cut -d " " -f 7 $FILE)
MIN=$(cut -d ":" -f 8 $FILE)
MAX=$(cut -d ":" -f 9 $FILE)
INACTIVE=$(cut -d ":" -f 10 $FILE)
WARNING=$(cut -d ":" -f 11 $FILE)

useradd -m -c "${USERNAME}" "${PASSWORD}" "${USER_ID}" "${GROUP_ID}" "${USER_INFO}" "${HOME_DIRECTORY}" "${SHELL}" "${MIN}" "${MAX}" "${INACTIVE}" "${WARNING}"

ベストアンサー1

この質問は宿題/課題のように見えるので、ここでは完全な解決策を示していません。

ほぼ同じ問題がありますhttps://stackoverflow.com/q/65303035/10622916

問題のスクリプトは入力ファイルの個々の行を処理しません。サイクルごとに1行を読み取って処理するループが必要です。

質問で使用されるコマンドは、指定された列のcutすべての値を変数に割り当てます(たとえば、スペースで区切られたすべてのユーザー名)。

USERNAME="charbel assil marwan michel"

1行だけ処理する場合、複数のcutコマンドを使用すると効果がありますが、非効率的です。

ファイルを1行ずつ処理し、入力フィールドを個々の変数に割り当てる方法の例については、次を参照してください。https://mywiki.wooledge.org/BashFAQ/001。コロンで区切られたフィールドを処理する方法と、入力に必要なフィールドよりも多くのフィールドを含めることができる場合に実行する操作のいくつかの例があります。

おすすめ記事