我有一个关于 Linux 中的 shell 脚本的问题。我一直试图让这段代码工作几个小时,它做了一些我不明白的事情。代码的目的是在 csv 文件中添加用户的名称、gecos 和组的值。csv 文件的格式如下:
U12341;Mario Speedwagon;docent
U12342;Petey Cruiser;classA
这是我的代码,我临时删除了 useradd 中的 group 函数,因为这样更容易调试。它一直告诉我 ` 是该组的无效名称。所以我试着用回声把变量放在屏幕上,发现一些对我来说很奇怪的东西。
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 数据。
以前有人遇到过这样的问题吗?提前致谢。