使用“while”和数字关系测试的BASH脚本错误
我想创建BASH文件来创建50个while用户。 但我运行它时遇到了一些问题使用“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
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