- 浏览: 4754252 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
bzhao:
你也应该可以这样:(not tested)./rbtunnel ...
在Bash脚本中怎么关闭文件描述符? -
bzhao:
如果有A进程原代码情况下,通过如下调用,把他的子进程继承关闭则 ...
在Bash脚本中怎么关闭文件描述符? -
Master-Gao:
楼主咋没分析下源码呢?
我使用过的Linux命令之dirname - 截取给定路径的目录部分 -
jiedushi:
tail -F 就可以吧
Linux下实时跟踪log4j日志文件的bash脚本 - 增强了tail -f的功能 -
java_is_new:
新手学习了,就是不明白为一个网卡配多个ip有什么用
我使用过的Linux命令之ifconfig - 网络配置命令
我使用过的Linux命令之for - Bash中的For循环
本文链接:http://codingstandards.iteye.com/blog/778999 (转载请注明出处)
用途说明
在shell中用于循环。类似于其他编程语言中的for,但又有些不同。for循环是Bash中最常用的语法结构。
常用格式
格式一
for 变量
do
语句
done
格式二
for 变量 in 列表
do
语句
done
格式三
for ((变量=初始值; 条件判断; 变量变化))
do
语句
done
使用示例
示例一
for s in ac apropos at arp do echo $s done
[root@jfht ~]# for s in ac apropos at arp
> do
> echo $s
> done
ac
apropos
at
arp
[root@jfht ~]#
示例二
for f in * do echo $f done
[root@jfht ~]# for f in *
> do
> echo $f
> done
anaconda-ks.cfg
bak181
hlx
install.log
install.log.syslog
job.sh
job.txt
mbox
mini
setup
temp
vsftpd-2.0.5-16.el5.i386.rpm
vsftpd.conf
work191
[root@jfht ~]#
示例三
ls >ls.txt for s in $(cat ls.txt) do echo $s done
[root@jfht ~]# ls >ls.txt
[root@jfht ~]# for s in $(cat ls.txt)
>
> do
>
> echo $s
>
> done
anaconda-ks.cfg
bak181
hlx
install.log
install.log.syslog
job.sh
job.txt
ls.txt
mbox
mini
setup
temp
vsftpd-2.0.5-16.el5.i386.rpm
vsftpd.conf
work191
[root@jfht ~]#
示例四
print_args()
{
for arg in "$@"
do
echo $arg
done
}
print_args 1 2 3 4
print_args "this is a test"
print_args this is a test
[root@smsgw root]# print_args()
> {
> for arg in "$@"
> do
> echo $arg
> done
> }
[root@smsgw root]# print_args 1 2 3 4
1
2
3
4
[root@smsgw root]# print_args "this is a test"
this is a test
[root@smsgw root]# print_args this is a test
this
is
a
test
示例五
for ((i=0; i<10; ++i)) do echo $i done
[root@smsgw root]# for ((i=0; i<10; ++i))
> do
> echo $i
> done
0
1
2
3
4
5
6
7
8
9
示例六 列表为数组
AREAS=(1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913) NAMES=(南京 无锡 徐州 常州 苏州 南通 连云港 淮安 盐城 扬州 镇江 泰州 宿迁) NUM_OF_AREAS=13 area_name_of() { for ((I=0; I<$NUM_OF_AREAS; ++I)) do if [ "$1" == "${AREAS[I]}" ]; then echo "${NAMES[I]}" fi done } echo $(area_name_of 1903) for AREA in ${AREAS[*]}; do echo $AREA $(area_name_of $AREA) done
[root@smsgw root]# AREAS=(1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913)
[root@smsgw root]# NAMES=(南京 无锡 徐州 常州 苏州 南通 连云港 淮安 盐城 扬州 镇江 泰州 宿迁)
[root@smsgw root]# NUM_OF_AREAS=13
[root@smsgw root]# area_name_of()
> {
> for ((I=0; I<$NUM_OF_AREAS; ++I))
> do
> if [ "$1" == "${AREAS[I]}" ]; then
> echo "${NAMES[I]}"
> fi
> done
> }
[root@smsgw root]# echo $(area_name_of 1903)
徐州
[root@smsgw root]# for AREA in ${AREAS[*]};
> do
> echo $AREA $(area_name_of $AREA)
> done
1901 南京
1902 无锡
1903 徐州
1904 常州
1905 苏州
1906 南通
1907 连云港
1908 淮安
1909 盐城
1910 扬州
1911 镇江
1912 泰州
1913 宿迁
[root@smsgw root]#
示例七 bash version 3.0+
bash --version for i in {1..5} do echo "Welcome $i times" done
[root@smsgw root]# bash --version
GNU bash, version 2.05b.0(1)-release (i386-redhat-linux-gnu)
Copyright (C) 2002 Free Software Foundation, Inc.
[root@smsgw root]# for i in {1..5}
> do
> echo "Welcome $i times"
> done
Welcome {1..5} times
[root@smsgw root]#
换个较高版本的Linux。
[root@jfht ~]# bash --version
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
[root@jfht ~]# for i in {1..5}
> do
> echo "Welcome $i times"
> done
Welcome 1 times
Welcome 2 times
Welcome 3 times
Welcome 4 times
Welcome 5 times
[root@jfht ~]#
示例八 Bash v4.0+
echo "Bash version ${BASH_VERSION}..." for i in {0..10..2} do echo "Welcome $i times" done
[root@smsgw root]# echo "Bash version ${BASH_VERSION}..."
Bash version 2.05b.0(1)-release...
[root@smsgw root]# for i in {0..10..2}
> do
> echo "Welcome $i times"
> done
Welcome {0..10..2} times
[root@smsgw root]#
换个较高版本的Linux。
[root@jfht ~]# echo "Bash version ${BASH_VERSION}..."
Bash version 3.2.25(1)-release...
[root@jfht ~]# for i in {0..10..2}
> do
> echo "Welcome $i times"
> done
Welcome {0..10..2} times
[root@jfht ~]#
传说Bash4.0可以支持这种语法。
Bash version 4.0.33(0)-release...
Welcome 0 times
Welcome 2 times
Welcome 4 times
Welcome 6 times
Welcome 8 times
Welcome 10 times
问题思考
1. 怎么用for实现死循环(无限循环)?
2. 比较几种写法的不同:(1) for arg in $* (2) for arg in $@ (3) for arg in "$*" (4) for arg in "$@"
3. 怎么跳出for循环?
4. for s; do echo $s; done 这个写法的执行结果是什么?
相关资料
【1】小蜗牛技术之家 BASH for 循环小结
【2】相当不错的介绍for语句的英文资料 Bash For Loop Examples
【3】Bash新手指南 第9章 重复性任务
【4】Keep IT Simple and Stupid 在Bash的命令行使用For循环
发表评论
-
在Linux用tar归档压缩文件时忽略某些文件和目录
2013-02-01 10:19 17053在Linux下,常用tar对文 ... -
使用nmap扫描服务器端口的一次操作
2012-11-01 17:00 15139使用nmap扫描服务器端口的一次操作 本文来自:http ... -
我使用过的Linux命令之wget - ooo
2011-09-14 13:10 0我使用过的Linux命令之wg ... -
推荐一篇学习Vim使用的好文:酷壳 - 简明 Vim 练级攻略
2011-09-09 12:53 9149简明 Vim 练级攻略 http://coolshell.c ... -
推荐一篇学习Vim使用的好文:酷壳 - 简明 Vim 练级攻略
2011-09-09 12:49 1简明 Vim 练级攻略 http://coolshell.c ... -
我使用过的Linux命令之:(冒号) - 啥也不做(除了……)
2011-08-29 13:18 12101我使用过的Linux命令之: ... -
我使用过的Linux命令之date - 显示、修改系统日期时间
2011-08-25 09:21 41985我使用过的Linux命令之da ... -
我使用过的Linux命令之declare - 声明shell变量(不知道没关系、知道了就更好的内建命令)
2011-08-16 09:22 21831我使用过的Linux命令之declare - 声明shell变 ... -
我使用过的Linux命令之alias - 设置命令的别名,让 Linux 命令更简练
2011-08-11 09:31 28828我使用过的Linux命令之alias - 设置命令的别名,让 ... -
我使用过的Linux命令之ar - 创建静态库.a文件
2011-08-08 10:40 51934我使用过的Linux命令之ar - 创建静态库.a文件 本 ... -
我使用过的Linux命令之crontab - 设置例行任务(类似于Windows中的任务计划)
2011-08-04 22:26 9752我使用过的Linux命令之crontab - 设置例行任务(类 ... -
我使用过的Linux命令之chmod - 改变文件/目录的访问权限
2011-08-03 21:33 10706我使用过的Linux命令之chmod - 改变文件/目录的访问 ... -
我使用过的Linux命令之export - 设置或显示环境变量
2011-08-02 19:55 25441我使用过的Linux命令之export - 设置或显示环境变量 ... -
我使用过的Linux命令之wc - 统计文件行数、单词数或字节数
2011-07-26 10:50 29018我使用过的Linux命令之wc - 统计文件行数、单词数或字节 ... -
我使用过的Linux命令之groupdel - 删除群组
2011-07-22 22:13 9693我使用过的Linux命令之gr ... -
我使用过的Linux命令之ifconfig - 网络配置命令
2011-07-21 20:43 60552我使用过的Linux命令之ifconfig - 网络配置命令 ... -
我使用过的Linux命令之ll - 列出文件/目录的详细信息
2011-07-20 21:22 7209我使用过的Linux命令之ll ... -
我使用过的Linux命令之mkdir - 创建目录
2011-07-20 20:58 13686我使用过的Linux命令之mkdir - 创建目录 本文链 ... -
我使用过的Linux命令之perror - 解释错误代码
2011-07-18 20:29 25081我使用过的Linux命令之perror - 解释错误代码 ... -
我使用过的Linux命令之ping - 测试与目标主机的连通性
2011-07-16 10:46 26615我使用过的Linux命令之ping - 测试与目标主机的连通性 ...
相关推荐
### Linux命令之bc -- 浮点计算器、进制转换 #### 概述 在Linux环境中,用户经常需要处理各种计算任务。尽管Bash环境已经具备了处理整数运算的能力,但对于涉及浮点数的复杂计算,则显得力不从心。这时,`bc` 命令...
条件控制通常用if…then…elif…else…fi语句来实现,循环控制则包括for循环、while循环以及until循环。BASH还支持使用函数,函数的定义和调用能够帮助程序员在脚本中重用代码,提高编程效率。 BASH还涉及到输入、...
在Linux操作系统中,Bash(Bourne-Again SHell)是默认的Shell程序,它是一种解释型的脚本语言,常用于批处理任务和自动化管理。Bash不仅提供了命令行交互,还允许用户编写shell脚本来实现更复杂的任务。在深入理解...
在Linux世界中,Bash(Bourne-Again SHell)是广泛使用的命令行解释器,它提供了丰富的命令行工具和脚本编写能力。"Linux-一行bash命令集合的仓库"是一个宝贵的资源,包含了各种实用的一行Bash命令,旨在帮助用户...
在IT行业中,Linux操作系统是开发者和系统管理员的重要工具,而Bash(Bourne-Again SHell)作为Linux默认的命令行解释器,是与操作系统交互的基础。本指南旨在深入探讨Bash,帮助读者掌握其核心概念、常用命令以及...
在IT领域,尤其是在系统管理和自动化任务执行中,Bash(Bourne-Again SHell)是一种广泛使用的命令行解释器,它是Unix、Linux和macOS等操作系统中的默认shell。掌握Bash命令和语法对于提高工作效率至关重要,特别是...
4. 复合命令:复合命令,如 `if` 语句、循环 (`for`, `while`) 和函数定义,提供了更高级的控制结构,使脚本具有更强的逻辑处理能力。 五、Shell 参数和扩展 1. 位置参数:`$1`, `$2`, ... `$n` 表示传递给脚本或...
- 调用命令:在脚本中可以直接调用Linux命令,如`ls`, `grep`等。 通过学习和熟练掌握上述内容,用户将能够更加高效地在Linux环境中工作,不论是日常的文件管理还是编写自动化脚本,都能得心应手。嵌入式系统课程...
- Bash(Bourne-Again SHell)是 Unix 和 Linux 系统中最常用的 Shell 类型之一。 - Bash 提供了丰富的功能,支持变量、数组、条件判断、循环等结构化编程特性。 **2. Bash Shell 脚本基础语法** - **脚本的第一...
这篇“Linux常用命令之Bash入门指南”旨在帮助初学者掌握Bash的基本用法和常用命令,从而更好地理解和操作Linux系统。以下是关于Bash的一些关键知识点: 1. **Bash shell介绍**:Bash是GNU项目的一个部分,它是Unix...
Linux命令是Linux操作系统中进行系统管理、文件操作和任务执行的基本工具。这个“Linux命令集合-手册”包含了一份详尽的Linux命令大全,是开发者和学习者的宝贵资源。以下是手册中可能涵盖的一些重要知识点: 1. **...
在Linux Shell编程中,循环是不可或缺的一部分,它允许我们重复执行一段代码,直到特定条件不再满足。本篇文章将深入探讨三种常见的循环结构:for、while和until。 **1. for循环** for循环常用于已知循环次数的...
在脚本中,可以使用控制结构如`if`、`for`和`while`循环,以及函数定义。例如,下面的脚本检查一个目录下是否存在特定文件: ```bash #!/bin/bash dir="/path/to/directory" filename="example.txt" if [ -f "$dir/...
在 Linux Shell 编程中,`for` 循环是一种非常强大的控制结构,用于重复执行一系列命令直到满足某个条件为止。`for` 循环的一个常见用法是通过 `for in` 格式来遍历一系列元素。本文将详细解释 `for in` 循环的不同...
学会使用if-else语句、for循环、while循环和until循环来控制脚本的流程。 4. **函数与别名**:了解如何定义和调用Bash函数,以及创建别名以简化命令输入。这可以提高脚本的可读性和重用性。 5. **数组**:Bash从...
3. **循环**:Bash中的`for`和`while`循环用于重复执行任务。例如,`for i in {1..5}; do echo $i; done`会打印数字1到5。 4. **函数**:Bash脚本可以定义函数来封装可重用的代码段。`function my_func() { echo ...
在Linux操作系统中,Bash(Bourne-Again SHell)是默认的命令行解释器,也是编写脚本的强大工具。对于系统管理员和开发者来说,掌握高级Bash脚本编程技巧是提高工作效率的关键。这份“高级Bash脚本编程指南”涵盖了...
Bash 提供了许多循环分支控制命令,例如 `if`、`else`、`elif`、`fi`、`for`、`do`、`done`、`case`、`while`、`until`、`continue`、`break` 等。 交互式– Linux 终端登录后,即进入交互式的执行环境 -----------...
在本文中,我们将使用 Linux 的 for 循环语句来制作 99 乘法口诀表。 什么是 for 循环语句? for 循环语句是 Linux shell 编程语言中的一种循环结构,用于重复执行一系列命令。它的基本语法结构为: ```bash for ...
这篇文档“linux常用命令之bash入门指南”旨在帮助初学者掌握Bash的基本用法和常用命令,从而更有效地在Linux环境中工作。 一、Bash简介 Bash是GNU项目的一部分,它是对早期的Unix Shell——Bourne Shell(sh)的一...