KSH For循环示例

时间:2020-01-09 10:41:09  来源:igfitidea点击:

在UNIX/Linux/* BSD/macOS/OS X操作系统下,如何在Korn Shell(KSH)中使用for循环?
当需要执行命令直到某些指定条件重复出现时,我们将ksh用于循环。
与传统的Unix shell相比,ksh的主要优势在于将其用作编程语言。

for循环使我们可以指定一个值列表,并对列表中的每个值执行命令。
让我们看看如何将ksh用于循环。

用于循环语法的KSH脚本

语法如下:

for {Variable} in {lists}
do
	echo ${Variable}
done

这是5次打印欢迎消息的示例shell脚本:

#!/bin/ksh
for i in 1 2 3 4 5
do
  echo "Welcome $i times"
done

运行脚本,如下所示:

$ chmod +x script.ksh
$ ./script.ksh

或者

$ ksh script.ksh

其中:

  • 我是变量名
  • 1 2 3 4 5是参数列表。它可以是单词,字符串或数字的任何列表。我们还可以使用shell命令或shell元字符。
  • " echo" Welcome $i times"`是根据参数列表执行五次的语句/命令。在这种情况下,请运行echo命令5次。

ksh for循环示例

您可以轻松设置范围(1到10),如下所示:

#!/bin/ksh
for i in {1..10}
do
  echo "Welcome $i times"
done

如果上述方法无法正常工作,请尝试使用seq命令作为Korn shell中的命令替换:

#!/usr/bin/ksh
for var in $(seq 1 10)
do
     echo "$var"
done

您还可以使用变量来定义项目列表。
当您开始循环时,将仅一次检查它们。

#!/bin/ksh
files="/etc/passwd /etc/group /etc/hosts"
for f in $files; do
	if [ ! -f $f ]
	then
		echo "$f file missing!"
	fi
done

如果要让for命令使用多个项目,请不要引用$list。
使用显式列表的另一个示例:

#!/bin/ksh
for car in bmw ford toyota nissan
   do
   print "Value of car is: $car"
done

KSH用于循环命令替换

创建一个名为spaceshuttles.txt的文本文件,如下所示:

columbia
endeavour
challenger
discovery
atlantis
enterprise
pathfinder

现在创建一个名为demo.ksh的shell脚本

#!/bin/ksh
for shuttle in $(cat  spaceshuttles.txt)
do
        print "Current Space Shuttle : $shuttle"
done

您还可以在/tmp目录中打印文件名:

#!/bin/ksh
for f in $(ls /tmp/*)
do
        print "Full file path  in /tmp dir : $f"
done

在ksh循环中使用命令行参数

在此示例中,在命令行上输入的数据成为for循环的参数列表:

#!/bin/ksh
for arg in $*
do
	echo "Command line arg: $arg"
done

如下运行:

$ ./script This is a test

总结

在本快速教程中,您学习了如何在使用ksh时使用for循环结构编写脚本。