格式
while 【 条件判断 】
do
语句体
done
上图
第一次代码,输入语句在外面,结果输入完(非hello)程序不断循环,没办法,ctrl+c给程序终止了,然后把用户输入的语句放到了循环体里面,结果正常了,
1.第一次判断 因为wi没有具体值,所有判断是成立,终止循环,但是判断是前面加“!”,这是反义,所以如果输入的不是hello,那么就一直循环,如果输入的是hello,则停止循环
其中需要注意的是中括号内部变量要加引号,注意空格分隔格式问题
while 【 判断 】 do 语句体 done 全程没有分号,这个和if 【 条件 】; then 语句体 fi的区别。当然也学过case ,结束是两个分号
再看一个案例
until do while 这个与while相反,当条件成立就跳出循环
仔细梳理下,感觉下面这个循环没啥必要呢,不过存在就有存在的道理哈。
案例三:计算1+2+3+...+n
if 加中括号,中括号和test功能类似,都是测试判断之意 这里涉及几个知识点,把之前的学习的复习下
由于我们输入变量并没有声明类型,所以默认是字符串,利用test中-n判断后面字符串是否是空,如果是空则返回false,
if里面的判断实现了,把数字替换成空格的命令 sed ‘s/[0-9]//g’,固定格式,单引号,前后是s和g,小白写的时候,最前面是斜杠,导致报语法错误,后来回去查找命令才发现格式不对
那么就是上面判断就是把数字替换成空格,然后利用-n判断返回值,如果是数字,替换成空格后是空串,返回false,直接执行else,否则执行then后面的语句体。
根据输入的字符串数值,采用$((表达式)) 计算求和,这个在之前学到过可以用declare -i 也可以用固定格式计算。结果如下图