shell脚本while循环,请教关于shell脚本循环的问题
shell脚本while循环,请教关于shell脚本循环的问题详细介绍
本文目录一览: shell脚本while用法
while? do? 循环是shell中比较简单的一种循环用法,它的构成是这样的
while? 条件
do
执行语句
done
先来一个简单的小例子—累加
再来一个比较有意思的例子,实现一个加法计算器的功能
结果为
这个脚本中有个命令——read命令,它的作用是读取我们从键盘上输入的信息,详细的用法在下一章当中讲解。
shell循环结构有哪些
Shell循环结构有多种循环形式,包括while循环、until循环、for循环和select in循环。
while循环
while 循环是Shell中最简单的一种循环,当条件满足时,while 重复地执行一组语句,当条件不满足时,就退出 while 循环。
until循环
unti 循环和 while 循环恰好相反,当判断条件不成立时才进行循环,一旦判断条件成立,就终止循环。
for循环的exp1、exp2、exp3 是三个表达式,其中 exp2 是判断条件,for 循环根据 exp2 结果来决定是否继续下一次循环。
Select In循环
select in循环是Shell独有的一种循环方式,用来增强交互性,可以通过列表中的编号来获取到每一个值
shell脚本用while循环计算1-100偶数相加
#!/bin/bash
sum=0
i=2
while (($i<=100))
do
sum=$(($sum +$i))
i=$(($i+2))
done
echo $sum
1、例如sum.sh
#!/bin/sh
if [ -z $1 ];then
echo Usage $0 number
exit 0
fi
sum=0
function ff_whilesum(){
i=2
while(($i<=$1))
do
sum=$(($sum+$i))
i=$(($i+2))
done
}
ff_whilesum $1
echo $sum
2、执行
./sum.sh 100
shell编程中while ture和while :为什么等同?
shell编程中while true与while :确实等同。类似于C语言中的 while (1),用于构造无穷循环。
在shell编程中经常用到循环,常用的循环有for和while循环两种。while循环默认以行读取文件,而for循环以空格读取文件切分文件,本篇就结合现网的一些使用示例说说二者的用法和区别。
一、常用语法
1、for循环
for循环常用的语法结构有如下几种:
for 变量 in seq字符串for 变量 in `command` " "for 变量 in "$@"或“$*”for((赋值;条件;运算语句))
2、while循环
while循环常用的语法结构有如下几种:
二、行读取示例
这里以常见的df获取磁盘信息为例,了解下使用for和while的几种循环方法处理时的区别。先看下我写的脚本,内容如下:
上面的脚本执行时结果如下:
可以看到,只有后面两种方法可以正常获取到我们想要的数据,前面两种方法在处理时和我们想要的结果都不一样。此示例得出的结果为:
1、while循环: 以行读取文件,默认分隔符是空格或者Tab;
2、for循环: 以空格读取文件,也就是碰到空格,就开始执行循环体,所以需要以行读取的话,就要把空格转换成其他字符。
三、ssh连接与wait
这里还是以一个测试脚本为例:
此示例的结果这里不再输出,具体可以使用该脚本ssh几台主机做个测试,测试后得到结果如下:
1、for循环: 循环体在后台执行,等待循环体全部执行结束,后面的命令接着执行。
2、while循环: wait没起到作用,循环体在后台执行,后面的命令也同时在执行。循环体内有ssh、scp、sshpass的时候有执行一次循环就退出的情况,解决该问题方法有如下两种:
a、使用ssh -n "command" ;b、将while循环内加入null重定向,如 ssh "cmd" < /dev/null 将ssh 的输入重定向输入。
请教关于shell脚本循环的问题
COUNT=1; read MAX; while [ $COUNT -lt 10 ]; do read VALUE; if [ $VALUE -gt $MAX ]; then MAX=$VALUE; fi; COUNT=`expr $COUNT + 1`; done; echo $MAX
输入时一行输入一个数,输10行
注意下面这句话
COUNT=`expr $COUNT + 1`;
那两个小点是键盘上波浪线的那个按键
把for((i=1;i<=200;i++)) 改成while true,如下:
#!/bin/bash
i=1
while true
do
{
python ./DALSSLClient.py
/home/fname/dal
echo ${i}
}
done
wait
就是死循环呗:
while :
do
函数
done
这样就可以啊
另外不同的shell支持的for循环的写法可能不尽相同,还可以这么写循环:
#!/bin/sh
str="1 2 3 4 5 6"
for i in $str; do
echo ${i}
done
你可以试一下
shell的for while读取文件写法和区别
常见的while和for循环的写法,大概有如下几种:
while循环:会将每行的内容读入到line变量,当while出现空行,用if判断字符=0, contiun
for循环: 将读入的内容以IFS(shell中的环境变量,Internal Field Seperator,字段分隔符)为界分隔, 然后将各个分隔开的内容,逐一读入变量line。本质上说,for循环读取的是字段,只不过可以设置IFS为\n这样能够逐行读取。
如果希望for处理文件按回车分隔,则需重新定义分隔符 IFS:内部字段分隔符 IFS=$'\n'
示例1
示例2
shell while 为何不跳出循环?
while 的语法是:
while 【 condition 】
do
...
done
所以要改成:
#!/bin/sh
COT=0
while [ $COT -le 5 ]
do
COT=`expr $COT + 1`
echo $COT
done
do语句是不是要提前一行啊。
手上没有linux
#!/bin/sh
COT=0
while [ $COT -lt 5 ]
do
echo $? ----->放在这里,否则循环无法终止。
COT=$((COT+1))
echo $COT
done
do语句要提前一行。
while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:while command
do
Statement(s) to be executed if command is true
done
命令执行完毕,控制返回循环顶部,从头开始直至测试条件。
shell while循环
&&不是在test[]中用的,他是在两个[]之间使用的,如:
[] && []
如果你只想使用一个条件测试的话可以这样
[ -a ]
你这个错误属于语法错误!
while [ $c != "1" && $c != "2" ] 改成
while [[ $c != "1" ] && [ $c != "2" ]]
把
while [ $c != "1" && $c != "2" ]改成
while [[ $c != "1" && $c != "2" ]]或者
while [ $c != "1" -a $c != "2" ]另外,如果像这样是输入1或者2,建议换成 select 语句。
linux shell脚本while编程的问题
这个在句法上有问题,在“[]”要与判断条件之间要有空格。
另外,就是你这个循环语句是一个死循环,最好是加一个判断语句,好跳出循环。
中括号前后都要有空格吧。
而且我在Solaris上试了一下,你这个是死循环,一直不停地输出0。
是你的程序写的有问题,while 后面的[]里面,要加上前后空格。
要像这样:
#!/bin/bash
i=5
while [ $i -gt 0 ];
do
echo "$i"
i=$[ i - 1 ]
done
ubuntu shell 关于while 循环
j++ 替换成:j=$((j+1)) 试试
另外
while [ $j-ne$jmax ]
这里注意 [] 括号和里面的判断之间要有空格,-ne 最好前后也加上空格
while [ $j -ne $jmax ]