Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在unix shell脚本中使用循环语句_Unix - Fatal编程技术网

如何在unix shell脚本中使用循环语句

如何在unix shell脚本中使用循环语句,unix,Unix,如何在unix shell脚本中使用循环语句,例如while、do-while。我正在使用putty服务器 for:迭代列表 $for i in `cat some_file | grep pattern`;do echo $i;done 而循环看起来很像C $ i=0;while [ $i -le 10 ];do echo $i;i=`expr $i + 1` ;done 如果您只打算使用命令行,那么可以使用perl,但我猜这是作弊 $perl -e '$i=0;while ($i <

如何在unix shell脚本中使用循环语句,例如while、do-while。我正在使用putty服务器

for:迭代列表

$for i in `cat some_file | grep pattern`;do echo $i;done
而循环看起来很像C

$ i=0;while [ $i -le 10 ];do echo $i;i=`expr $i + 1` ;done
如果您只打算使用命令行,那么可以使用perl,但我猜这是作弊

$perl -e '$i=0;while ($i < 10){print $i;$i++;}'
$perl-e'$i=0;而($i<10){print$i;$i++;}'
更多数据


除了Tom提到的“for”和“while”循环外,还有一个“until”循环(至少在经典的Bourne和Korn Shell中,但在MacOS X上的Bash中,可能在其他地方也是如此):

until [ -f /tmp/sentry.file ]
do
    sleep 3
done
此循环在测试命令成功时终止,而“while”循环在测试命令失败时终止

还请注意,您可以测试一系列命令;最后一个命令是计数的命令:

while x=$(ls); [ -n "$x" ]
do
    echo $x
done

这将继续回显目录中的所有文件,直到它们全部被删除。

到OP,以迭代文件

for file in *
do
 echo "$file"
done
生成计数器

for c in {0..10}
do
 echo $c
done 

在KSH中迭代文件

读行时;做

回显“文件中的行$line”

使用for循环完成

echo "sample while loop"
i=0;
while [ $i -le 10 ]
do
echo $i
 (( i++ ))
done
最大值=10
为了((i=0;i您需要进一步解释。什么样的循环?重要的循环?在文件名上循环?在事物列表上循环?putty服务器部件真的相关吗?市场和互联网上所有有关shell脚本的书籍都有一章专门介绍循环。请在开始progra之前努力研究它们在unix中使用mming。您使用的是哪个shell?bash、zsh、dash、tcsh?如果您不知道,您使用的是什么发行版/版本?osx、ubuntu、debian、fedora?严格来说,这需要bash而不是Bourne shell;在许多现代系统中,没有Bourne shell,/bin/sh是指向/bin/bash的链接。第一个是无用使用ls的坏例子。对于我来说,是这样做的echo$i;doneseSecond示例:i=
expr$i+1
我已将ls更改为其他内容。这只是一个显示for循环结构的示例。
echo "sample while loop"
i=0;
while [ $i -le 10 ]
do
echo $i
 (( i++ ))
done
using for loop
max=10
for (( i=0; i<=$max; i++ ));
do
echo $i
done