1

Linux のシェルスクリプトについて質問があります。私はこのコードを何時間も機能させようとしてきましたが、理解できないことをしています。コードの目的は、名前、gecos、およびグループの値を持つユーザーを csv ファイルに追加することです。csv ファイルは次のようにフォーマットされます。

U12341;Mario Speedwagon;docent
U12342;Petey Cruiser;classA

これは私のコードです。一時的に useradd のグループ関数を削除したのは、その方法でデバッグする方が簡単だったからです。` はグループの無効な名前だと言い続けました。そこで、変数をエコーで画面に表示しようとしたところ、非常に奇妙なことに気付きました。

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

これは奇妙な出力でした:

)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

文字列の最初の文字の上に $group の後に文字を置くようです。同じ変数をグループ名として使用する私の問題はまったく同じだと思います。

グループコードなしでスクリプトを実行すると、正しいgecosデータでユーザーが追加されます。

誰かが以前にこのような問題を経験したことがありますか? 前もって感謝します。

4

1 に答える 1