Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux bash脚本-用于循环问题_Linux_Bash_Shell_Scripting - Fatal编程技术网

Linux 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

我正在编写一个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 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的未来。