Linux bash脚本-用于循环问题
我正在编写一个bash脚本,它将在批处理过程中添加用户。该代码如下所示:Linux bash脚本-用于循环问题,linux,bash,shell,scripting,Linux,Bash,Shell,Scripting,我正在编写一个bash脚本,它将在批处理过程中添加用户。该代码如下所示: #!/bin/bash # A script that creates users. echo "This is a script to create new users on this system." echo "How many users do you want to add?" read am echo " " for i in {0..$am..1} do echo "Enter a usernam
#!/bin/bash
# A script that creates users.
echo "This is a script to create new users on this system."
echo "How many users do you want to add?"
read am
echo " "
for i in {0..$am..1}
do
echo "Enter a username below:"
read usern
sudo useradd $usern
sudo passwd $usern
echo " "
echo "User $am '$usern' added."
done
在本例中,我想创建4个用户。我检查并输入用户名“callum3”,并将密码设置为“1234”,以便于登录。一旦我输入了所有内容(正确,我可以添加),终端窗口将显示以下内容
User 4 'callum3' added.
这表明我的for循环实际上不起作用,而我看不出它有什么问题。我尝试过使用while循环,但也没有成功
我是犯了新手错误还是有更深层次的问题?虽然我怀疑,但为了更好地理解你的脚本可能有什么问题,我把它粘贴了进去。问题在于:
for i in {0..$am..1}
Bash不支持大括号范围扩展中的变量。也就是说,不能在像{..}
这样的表达式中使用变量
相反,使用。使用seq$var
可以获得从1(默认值)到$var
的序列:
for i in $(seq "$am")
您可以使用:
for i in `seq 0 $((am-1))`
do
...
done
序列将从0开始,并在
$am-1
结束。我觉得我遗漏了一些东西,因为没有人为循环提出算法:
for ((i=0; i<am; i++)); do
…
done
for((i=0;它工作得很好!谢谢你,这让我困惑了一段时间。很高兴看到:)除非你以前遇到过这个问题,否则它不是很明显!@CallumWale如果你在你发布的代码段上运行,它也会自动指出谢谢你指出,另一个人:)当然,我不知道有这样的事情存在。我只是为了方便OP的未来。