shell中的for、while、until
for var in list
do
commands
done
在每个迭代中,变量var会包含列表中的当前值,第一个迭代会使用列表中的第一个值,第二个迭代使用第二个值。
在do和done中,$var变量包含着这次迭代对应的当前值。
只要你愿意,可以将do语句和for语句放在同一行,但必须用分号将其同列表中的值分开。
for var in list;do。
#! /bin/bash
for test in Alabama Alaska Arizona Arkansas California Colorado
do
echo The next state is $test
done
在最后一次迭代后,$test变量的值会在shell脚本的剩余部分一直保持有效。它会一直保持最后一次迭代的值(除非你修改了它)。
shell看到for列表值中的单引号并尝试使用它们来定义一个单独的数据值,这个过程一团混乱。
两种解决办法:
1)使用转义字符(反斜线)来将单引号转义
2)使用双引号来定义用到单引号的值。
如:
for test in I don't know if this'll work
do
echo "word: $test"
done
执行结果:
liuxj@liuxj-Lenovo:~/shell_test$ ./for_test
word: I
word: dont know if thisll
word: work
修改后
for test in I don\'t know if "this'll" work
do
echo "word: $test"
done
执行结果:
liuxj@liuxj-Lenovo:~/shell_test$ ./for_test
word: I
word: don't
word: know
word: if
word: this'll
word: work
for循环假定每个中值都是用空格分割的。注意:如果有包含空格的数据值,可用双引号将其包含起来,shell不会将双引号当成值的一部分。
从变量读取列表
通常shell脚本遇到的情况是,将一系列值都集中在一个变量中,然后需要遍历整个列表。
list="Alabama Alaska Arizona Arkansas Colorado"
list=$list" Connecticut"
for state in $list
do
echo "Have you ever visited $state?"
done
结果:
Have you ever visited Alabama?
Have you ever visited Alaska?
Have you ever visited Arizona?
Have you ever visited Arkansas?
Have you ever visited Colorado?
Have you ever visited Connecticut?
注意:代码中用了另一个赋值语句来向$list变量包含的已有列表添加了一个值。这是向变量中存储的已有文本字符串尾部添加文本的一个常用方法。
从命令读取值
用反引号来执行任何能产生输出的命令。在states的文件中输入一些参数。
file="states"
for state in `cat $file`
do
echo "Visit beautiful $state"
done
在linux中,目录名和文件名中包含空格当然是合法的,要容纳这种值,你应该将$file变量用双引号圈起来。
shell脚本中多行的注释:
if false; then 语句1 语句2 语句3 语句4 fi
如:
#! /bin/bash
if false;then
for test in Alabama Alaska Arizona Arkansas California Colorado
do
echo The next state is $test
done
fi
shell中的for、while、until的更多相关文章
- linux shell 中的sleep命令
开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...
- shell 中的与、或表达式
今天总结一下linux shell中逻辑关机表达方式.逻辑与的表达: 1).if [ $xxx=a -a $xx=b ] 注:-a表示and的意思 2).if [ $xxx=a ] && ...
- shell简单用法笔记(shell中数值运算)二
shell中变量值,如果不手动指定类型,默认都是字符串类型: 例如: a= b= c=$a+#b echo $c 结果会输出:123+456 shell中,如果要进行数值运算,可以通过一下方法: 方法 ...
- shell中{}的妙用
shell中${}的妙用 1. 截断功能 ${file#*/}: 拿掉第一条/及其左边的字符串:dir1/dir2/dir3/my.file.txt ${file##*/}: 拿 ...
- shell中命令之间数据的传递
1.管道 "|" ls | cat -n > out.txt 2. 子shell 2.1 子shell 说明 在shell脚本中可以用()操作符可以定义一个子shell #/ ...
- shell中&&和||的使用方法
测试题: [ -z "" ] && echo 0 || echo 1 的结果是多少 看看这两个 && || 的用户 http://blog.csd ...
- 任督二脉之Shell中的正则表达式
VBird说学习Linux,掌握了Shell和正则就相当于打通了任督二脉,此后能力的成长才会突飞猛进. Shell的基础学习之前已经总结了一篇博客:http://www.cnblogs.com/jyz ...
- shell中条件判断if中的-z到-d的意思
shell中条件判断if中的-z到-d的意思 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 ...
- shell中的循环
shell中的循环 for循环 类似于C语言的步长控制 例如: ;i<=;i++)); ); done 将1到10,依次乘以4,然后打印出来. 这里顺便提一下,shell里面表达式的计算,可以有 ...
- shell中&&和||的使用方法_转
shell中&&和||的使用方法 &&运算符: command1 && command2 &&左边的命令(命令1)返回真(即返 ...
随机推荐
- javascript中的一些基本方法收藏
W3C DOM 什么是DOM,DOM其实就是把一个HTML或者XML等符合W3C标准的文档内容模拟成一个JAVA对象,这样才能给JAVA或者JS来操作.下面是JS中模拟出的内置DOM对象documen ...
- [转]IBInspectable / IBDesignable
原文:http://www.cocoachina.com/ios/20150227/11202.html 无论陈词滥调多少次,比起一个需要我们记住并且输入什么的界面来说,如果替换成我们能够看见并可控制 ...
- 解压和生成 system.img&data.img ( ext4格式)
另一篇文章讲述了如何解压和生成system.img, 那是针对yaffs2格式的文件系统镜像. 目前越来越多的Android手机放弃了nand, 更多采用了emmc为内部存储设备. 以emmc为存储设 ...
- Android 不通过parent实现样式继承
1:styles.xml文件内容如下: <!-- TextView Style --> <style name="tvStyle"> <item na ...
- AzCopy – 上传/下载 Windows Azure Blob 文件
在我们收到的请求中,有一个频繁出现的请求是提供一种能在 Windows Azure Blob 存储与其本地文件系统之间轻松上传或下载文件的方法.一年半前, 我们很高兴地发布了 AzCopy, Wind ...
- java实现矩阵连乘的动态规划
package com.cjs.algorithm; public class DynamicPlan { /** * 此方法用来求解矩阵连乘的最小数乘次数 * * @param p * 传入的要连乘 ...
- 关于target is null for setProperty的问题总结
出现了这个问题,报错是 com.opensymphony.xwork2.ognl.OgnlValueStack WARN - Error setting expression 'costRecord ...
- iphone开发 IOS 组织架构图
转载自 :http://blog.csdn.net/mashi321323/article/details/18267719 登录|注册 mashi321323的专栏 目录视图 ...
- IIS注册asp.net 4.0
如果你是先装的VS后添加的IIS功能,那么你需要在ISS中注册NET Framework: 32位的Windows:------------------------------------------ ...
- (转).net程序员转战android第二篇---牛刀小试
上篇说道如何搭建android的开发环境,这一篇我们将牛刀小试一下, 完成我们第一个android APP应用. 我就从新建项目说起吧. 首先打开Eclipse,选择顶部的File(文件)——new( ...