KSH For 循环示例
如何在 UNIX / Linux / *BSD / macOS/OS X 操作系统下的 Korn Shell (KSH) 中使用 for 循环?
当我们需要执行命令直到重复发生某些指定条件时,我们会使用 ksh for 循环。ksh 相对于传统 Unix shell 的主要优势在于它可用作编程语言。for 循环允许我们指定一个值列表,然后针对列表中的每个值执行命令。让我们看看如何使用 for ksh for 循环。
当我们需要执行命令直到重复发生某些指定条件时,我们会使用 ksh for 循环。ksh 相对于传统 Unix shell 的主要优势在于它可用作编程语言。for 循环允许我们指定一个值列表,然后针对列表中的每个值执行命令。让我们看看如何使用 for ksh for 循环。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Linux 或 Unix 终端 |
类别 | Linux shell 脚本 |
先决条件 | 韩国仁爱医院 |
操作系统兼容性 | BSD • Linux • macOS • Unix |
预计阅读时间 | 2 分钟 |
KSH 脚本 – for 循环语法
语法如下:
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
- i是变量名
- 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
如果上述方法无效,请尝试在 Korn shell 中使用 seq 命令作为命令替换:
#!/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”。另一个使用 for 显式列表的示例:
#!/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 循环结构的脚本。通过键入以下 man 命令查看 ksh 手册页以获取更多信息:
$ man ksh
参见
- CentOS / RHEL:安装 KornShell(KSH)
- Debian / Ubuntu Linux:安装 KornShell(KSH)
- 这个repo 包含KSH 的 ksh93u+ 和 ksh93v- 版本。