使用“while”和数字关系测试的BASH脚本错误

使用“while”和数字关系测试的BASH脚本错误,bash,shell,ubuntu,Bash,Shell,Ubuntu,我想创建BASH文件来创建50个while用户。 但我运行它时遇到了一些问题 limite=51 num=1 while [$numero != $limite] do echo -n 'enter your name: ' "$num" ; read name sudo useradd $name num=$(($num + 1)) done 问题来自1号线和4号线 我不知道为什么 好吧,我有这个,它很管用 limite=51 num=1 while [ $num != $l

我想创建BASH文件来创建50个while用户。 但我运行它时遇到了一些问题

limite=51
num=1

while [$numero != $limite]
do
  echo -n 'enter your name: ' "$num" ; read name
  sudo useradd $name
  num=$(($num + 1))
done
问题来自1号线和4号线

我不知道为什么

好吧,我有这个,它很管用

limite=51
num=1

while [ $num != $limite ] ; do
  echo -n 'enter your name: ' "$num" ; read name
  sudo useradd $name
  num=$(($num + 1))   
done

Thx对您来说

shell对于它想要空白的位置非常迂腐(执行所谓的分词)

我们应该做到这一点。您应该决定是使用
$numo
还是
$num
。。。发布时它将不起作用,因为未初始化使用了
$numero

一些背景:while复合语句的语法是

while list; do list; done
列表可以是一个像
[
(谁说程序不能有像
/usr/bin/[
?)这样有趣的名字)这样的程序,所以
实际上调用
[
程序有4个参数:扩展
$numero
!=
,扩展
$limits
]
(这是一个无用的参数,但使语法看起来很漂亮。)

[
程序与
test
程序相同;后者不需要无用的
]
参数。事实上,我更喜欢使用
test
编写所有条件:

while test $numero != $limite; do
  echo ...
done

另一个提示:分号
是一个语句分隔符,前面不需要空格。

[
实际上是一个命令,所以它后面需要空格,第4行应该是空格

while [ $numero != $limite ]

# See it's actually a command
$ which [        
/usr/bin/[
就像
catfile1
会抱怨一样,
[$numero
,做
mantest
了解更多信息,甚至
manbash


另外,如果这是一个完整的脚本,它是
$numo
,那么如果它是
$num

使用bash习惯用法,那么您的脚本最好写为

limite=51

for ((num=1;num<limite;++num)); do
    read -p "enter your name: $num" name
    sudo useradd "$name"
done

你有什么“问题”吗?p.s
$numero
在任何地方都没有定义。它不应该是
num
?抱歉num=numero我重命名了它,但他没有这样做问题可能是
[1:command not found
。很高兴您能使用它,别忘了勾选帮助您排序的答案。请发布错误消息是
$numero
一个以某种方式生成的神奇变量?(我不知道bash,但脚本看起来是错误的)。我的第一个bash和它有点难,hahathx它现在可以工作了。$num=$numero我必须重命名它。
limite=51

for ((num=1;num<limite;++num)); do
    read -p "enter your name: $num" name
    sudo useradd "$name"
done
while read name; do sudo useradd "$name"; done < user.txt