我在底部用其他语言编写了相同的逻辑,以便您更好地理解我的问题。我注意到在bash中使用if语句时有两种语法if [[ conditional statement ]]; then
和if [ conditional statement ] then
我也很想知道两者之间的区别是什么?谢谢你的帮助!
#!/bin/bash
groupadd SC001
count=1
userid=$(ls /home | wc -l)
echo "##Total user is "$userid
if [ $uesrid -lt 10 ] then
while [ $count -lt 10 ]
do
useradd -m "sc"$count"_2018"
let "count+=1"
done
fi <-----------------------------This is the line where error message pointing at lol
count=10
userid=$(ls /home | wc -l)
if[ $uesrid -ge 10 ] then
while [ $count -le 25 ]
do
useradd -m "sc"$count"_2018"
let "count+=1"
done
fi
################# Could be written in other language
groupadd SC001
int count = 1;
int userid = userid=$(ls /home | wc -l);
system.out.print("##Total user is "+userid);
if (userid < 10){
while (count < 10){
useradd -m "sc"$count"_2018";
count++;
}
}
count=10;
userid = userid=$(ls /home | wc -l);
if (userid >= 10){
while (count < 25){
useradd -m "sc"$count"_2018";
count++;
}
}
答案 0 :(得分:4)
当您编写while
循环时,您将do
放在自己的行上。 if
期望与then
相同。
错:
if [ blah ] then
右:
if [ blah ]
then
很多人觉得这样做很麻烦,所以如果你愿意,你可以用分号代替换行符。
if [ blah ]; then
答案 1 :(得分:0)
我找到了答案!我注意到没有流行的IDE用于bash脚本。但是,我找到了一个语法检查器!我从https://www.shellcheck.net/得到了帮助。我的所有错误都被突出显示并解释了为什么以及如何像IDE一样解决它们。现在它完美无缺。快乐!
#!/bin/bash
groupadd SC001
count=1
userid=$(find /home -maxdepth 1 -type d -printf '%f\n' | wc -l)
echo "##Total user is ""$userid"
if [ "$userid" -lt 10 ]; then
while [ $count -lt 10 ]
do
useradd -m "s"$count"_2018"
((count+=1))
done
fi
count=10
userid=$(find /home -maxdepth 1 -type d -printf '%f\n' | wc -l)
if [ "$userid" -ge 10 ]; then
while [ $count -le 25 ]
do
useradd -m "s"$count"_2018"
((count+=1))
done
fi