shell脚本编程-结构化命令2-for命令

1、for命令

(1)语法

    for val in list; do
        commands
    done

  list参数提供了一些列用于迭代的值,val值依次赋值为list中的值,知道list轮询结束。

commands可以是一条或多条shell命令,echo $val可以查看当前循环的值

(2)读取列表中的值

    $cat test
    #!/bin/bash
    # basic for command
    for test in A B C; do
        echo the next val is $test
    done
    $./test
    the next val is A
    the next val is B
    the next val is C

每次for命令便利提供的值列表时, 会将列表中的下个值赋给$test变量。

在最后一次迭代中,$test的值会在shell脚本中的剩余部分一直有效。

当所要迭代的值中含有空格、单引号、双引号时,for命令不能识别其为值得一部分,可以采用两种方式处理:

当遍历的值中出现空格、单引号时,可以通过在值两侧添加双引号以示区别;

当遍历的值中出现单引号、双引号时,可以通过转义字符\来讲其转义;

(3)从变量或命令读取值

通常shell脚本遇到的情况是,将一系列的值存储在变量中,然后遍历整个变量列表

   $cat test
    #!/bin/bash
    # using a variable to hold the list
    list="A B C"
    list=$list" D"
    for test in $list; do
        echo the next val is $test
    done
    $./test
    the next val is A
    the next val is B
    the next val is C
    the next val is D

向已知变量中增加值通过list=$list" D"实现,这个尾部添加文本的一个常用方法

生成遍历列表的另一个方法是使用命令的输出,可以通过反引号来执行任何能产生输出的命令

    $cat test
    #!/bin/bash
    # reading value from a file
    file="alphabet"
    for test in `cat $file`; do
        echo the next val is $test
    done
    $./test
    the next val is A
    the next val is B
    the next val is C

(4)更改字段分隔符

bash中定义了特殊的环境变量IFS,称为内部字段分隔符。默认情况下,bash会将空格、制表符、换行符作为字段分隔符。

当我们在使用时,可以修改IFS的值已满足不同的情况。

修改IFS值格式,如:IFS=$‘\n‘, IFS=:

一般情况下载处理长脚本时,需要先将IFS的值保存在临时变量中,在使用完后再恢复它:

    IFS.OLD=$IFS
    IFS=$‘\n‘
    <use the new IFS value in code>
    IFS=$IFS.OLD

如果需要多个IFS字符,只需将它们在赋值时串起来即可:IFS=$‘\n:;"‘,这样就可以把换行、冒号、分好、双引号都作为字符按分隔符处理。

(5)使用通配符遍历目录

    $cat test
    #!/bin/bash
    #iterate through all the files in a directory
    for file in /home/test/* ; do
        if [ -d "$file" ]; then
            echo "$file is a directory"
        elif [ -f "$file" ]; then
            echo "$file is a file"
        fi
    done

linux中文件或目录中可以包含空格,所以file需要使用双引号"$file"。

时间: 2024-08-11 01:26:33

shell脚本编程-结构化命令2-for命令的相关文章

shell脚本编程-结构化命令1

1.分支语句 (1)if-then-fi 语句: 格式: if command; then commands fi 当command命令的退出状态码为$?=0时,进入分支,否则继续执行后面的命令. (2) if-then-else-fi 语句: 格式: if command; then commands1 else commands2 fi 当command命令的退出状态码为$?=0时,进入then分支,否则执行else分支命令. (3)if-then-elif-then-fi 语句: 格式:

linux shell脚本使用结构化命令

内容: 一.if-then命令 二.if-then-else命令 三.test命令 四.case命令 1.if-then结构化命令中最基本的类型,其格式如下: 1 if command 2 then 3 commands 4 fi 这里需要注意的是在其他语言中if 语句之后的对象是一个等式来测试是TRUE还是FALSE值,而在bash shell中if 语句会运行if 行定义那个命令.如果该命令退出码是数字0,则表示该命令运行成功,位于then 后面的命令就会运行.如果退出码是其他值,那么the

linux shell脚本使用结构化命令(2)

一.for命令 二.while命令 三.until命令 1.for命令基本格式 1 for var in list 2 do 3 commands 4 done 1 [email protected]:~/testshell> cat fortest.sh 2 #!/bin/bash 3 #test for command 4 5 for city in beijing shanghai shenzhen dalian 6 do 7 echo the city is $city 8 done 9

shell脚本编程总结

shell脚本是什么? (1)命令的堆积: (2)程序逻辑: 如何写shell脚本: 脚本文件的第一行,顶格:给出shebang,解释其路径,用于指明解释执行当前脚本的解释器程序文件. 常见的解释器: #!/bin/bash #!/usr/bin/python #!/usr/bin/perl 运行脚本: (1)赋予执行权限,并直接运行此程序文件: (2)直接运行解释器,将脚本以命令行参数传递给解释器程序: bash /PATH/TO/SCRIPT_FILE 注:脚本中的空白行会被解释器忽略. 脚

Shell脚本编程

编程语言发展史:机器语言-->汇编语言-->高级语言 编程语言的分类:(1)根据运行方式 静态语言:编译型语言,事先转换成可执行格式 C.C++.JAVA.C#  编译运行:源代码-->编译器 (编译)-->可执行程序文件 动态语言:解释型语言,边解释边执行 shell.Python..Perl.ASP.PHP  解释运行:源代码-->运行时启动解释器,由解释器边解释边运行 (2)根据其编程过程中功能的实现是调用库还是调用外部程序文件来分      shell脚本编程:利用系

Shell脚本编程概述(一):算数运算和条件测试

一.shell脚本语言 1.编程语言的分类: (1)根据运行方式 编译运行:源代码 --> 编译器 (编译)--> 程序文件: 解释运行:源代码 --> 运行时启动解释器,由解释器边解释边运行: (2)根据其编程过程中功能的实现是调用库还是调用外部的程序文件: shell脚本编程:利用系统上的命令及编程组件进行编程: 完整编程:利用库或编程组件进行编程: (3)编程模型: 过程式编程语言:以指令为中心来组织代码,数据是服务于代码: 顺序执行.选择执行.循环执行:代表:C,bash 面向对

《Linux命令行与shell脚本编程大全》学习笔记(转)

第一部分:Linux命令行<Linux命令行与shell脚本编程大全> 第一章:初识Linux shell<Linux命令行与shell脚本编程大全> 第二章:走进shell<Linux命令行与shell脚本编程大全> 第三章:基本的bash shell命令<Linux命令行与shell脚本编程大全> 第四章:更多的bash shell命令<Linux命令行与shell脚本编程大全> 第五章:使用Linux环境变量<Linux命令行与she

【持续更新中】Linux命令行与Shell脚本编程大全(第3版)读书笔记12-20章

<Linux命令行与Shell脚本编程大全(第3版)>读书笔记 第十二章 使用结构化命令 根据条件使脚本跳过某些命令,这样的命令称为结构化命令(structured command).结构化命令允许改变程序执行的顺序. If-then语句: If command Then Commands Fi 如果if后的command执行退出码是0(也就是执行成功了),then后面的语句就会被执行. 也可以写成: If command; then Commands Fi 注意了,if后的command结果

《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf

下载地址:网盘下载 内容简介  · · · · · · 本书是一本关于Linux 命令行与shell 脚本编程的全面教程.全书分为四部分:第一部分介绍Linuxshell 命令行:第二部分介绍shell 脚本编程基础:第三部分深入探讨shell 脚本编程的高级内容:第四部分介绍如何在现实环境中使用shell 脚本.本书不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料. 本书内容全面,语言简练,示例丰富,适合于linux 系统管理员及Linux 爱好者阅读