Shell脚本来更改用户的uid

我有一个文件(users_uid)与用户和uid是两个参数,如下所示:

assds 611 dsdsd 612 xyzx 613 rerer 614 

这些用户存在于机器中。 我想将每个用户的uid更改为给定用户名的那个值。 我知道我可以使用usermod -u <uid> <user>来修改uid。 但我不知道如何读取文件中的两个值,并使用usermod命令将它们作为2个参数放在for循环中。

awk'{print'usermod -u“$ 2”“$ 1}'users_uid | 庆典

被接受的答案存在执行数据文件中的恶意或意外内容的风险。 这里是正确的方法来做你想要的东西,而不会产生awk和额外的bash副本加上它是从我提到的风险是安全的。

 while read -r user uid do usermod -u "$user" "$uid" done < users_uid 

作为一个单行:

 while read -r user uid; do usermod -u "$user" "$uid"; done < users_uid