shell的进阶编程

2023-05-16

shell的进阶编程

关于for

  for 变量名字 in 列表;do

    循环体

  done

  例如for: for NAME [in WORDS ... ] ; do COMMANDS; don其中前面的name就是个变量名,而且不需要加$,每次循环和中间列表中的值有关,中间的列表可以使用花括号来表示指定范围,也可以使用一些命令来生成列表,但是需要加$(),要把前面的变量名和后面的循环体连接起来。例如:

  [root@centos7 data]#touch f1,txt

  [root@centos7 data]#touch f2.txt

  [root@centos7 data]#touch f3.txt

  [root@centos7 data]#for file in *.txt;do echo

  filename is $file;done

  filename is f2.txt

  filename is f3.txt

  其中的通配符来表示的话是不需要加双引号的。

  但是如果要在脚本里面引用文件可以使用命令cat filename,前提是命令需要反向单引号。例如:

  #!/bin/bash

  for USER in ` cat userlist.txt ;do

    useradd $USER

  done

  如果说数据量比较大的话可以实行并行运行,使用{}括起来然后最后加&,例如:

  #!/bin/bash

  NETID=172.16.128

  for HOSTID in {1..245};do

     {

    if ping -c1 -w1 $NETID.$HOSTID &> /dev/null;then

      echo $NETID.$HOSTID is up | tee -a hostlist.txt

    fi

     } &

  done

  wait

  for也是可以套嵌的,例如:

  #!/bin/bash

  for i in {1..10};do

    for j in {1..10};do

      echo -e '*\c'

    done

    echo

  done

关于for还可以使用(( ))里面只要不是数字就认为是变量,例如:

  #!/bin/bash

  n=10

  for ((sum=0,i=1;i<=n;i++));do

    let sum+=i

  done

  echo sum=$sum

  像continue只是临时结束一次循环,并不影响大循环。例如:

  #!/bin/bash

  for ((i=0;i<10;i++));do

     if [ $i -eq 5 ];then

    continue

     fi

    echo i=$i

  done

  如果说确定终止循环可以使用break,但是并不是退出脚本,只是退出循环而已,退出脚本可以使用exit。例如:

  #!/bin/bash

  for ((i=0;i<10;i++));do

    if [ $i -eq 5 ];then

      break

    fi

    echo i=$i

  done

  这个例子就是打印到4,5以后就不再循环了,但是不会整个脚本的结束,以后的脚本还会继续运行。

  shift可以接连执行,例如创建不同用户吧:

  #!/bin/bash

  while [ "$1" ];do

     useradd $1

     echo user:$1 is created

    shift

  done

  echo finish

  这个脚本如果执行的话,后面跟几个用户名都可以创建。

转载于:https://blog.51cto.com/14322562/2409784

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell的进阶编程 的相关文章

  • 如何替换带引号的多单词字符串作为参数?

    我正在尝试替换包含多个带引号的单词的字符串变量作为命令的参数 因此 给出以下示例脚本 请注意 shebang 中的 x 这会导致输出被记录到 stderr bin bash x myArg hello world echo string i
  • 命令行参数中的“-”(破折号)有什么魔力?

    例子 创建 ISO 映像并将其直接刻录到 CD mkisofs V Photos r home vivek photos cdrecord v dev dev dvdrw 更改到上一个目录 cd 侦听端口 12345 并解压发送到该端口的数
  • shell 脚本无法将命令行输出保存到变量中

    我正在尝试执行 shell 命令 然后使用 shell 脚本将输出保存到变量中 所以我使用这样的反引号 out ls l print out 该代码工作正常 我可以将它用于任何其他 shell 命令 但是当我尝试执行 python vers
  • 如何在 Bash 中将字符串转换为小写

    有办法进去吗bash questions tagged bash将字符串转换为小写字符串 例如 如果我有 a Hi all 我想将其转换为 hi all 有多种方法 POSIX标准 https en m wikipedia org wiki
  • 如何从 C 文件更改终端中的目录

    如何从 C 程序更改将在终端上生效的目录 实际上不要告诉 system 函数或 chdir 函数 这些仅适用于 C 中的进程或子 shell 假设我正在从 bash shell 执行一个 C 程序 其进程 ID 为 10223 那么 我可以
  • 如何获取与文件类型关联的图标路径和索引?

    给定一个文件类型 例如 txt 我怎样才能得到 path index 文件类型的关联图标路径和索引 例如 我想转换 txt into Path SystemRoot system32 imageres dll Index 102 有了这些信
  • 如何使用 cron 作业运行 python 文件

    您好 我创建了一个 python 文件 例如file example py 该文件将输出 sensex 值 假设该文件在linux系统上的路径为 Desktop downloads file example py 我通常会运行该文件pyth
  • 当我通过 shell 脚本创建 .txt 文件时,为什么文件名末尾出现问号? [复制]

    这个问题在这里已经有答案了 我正在编写一个 shell 脚本 我应该在其中创建 1 个文本文件 当我这样做时 文件名末尾出现一个问号 是什么原因 我正在 bash 脚本中尝试以下方法 1 grep ERROR a1 gt text txt
  • 如何在Windows Git shell中运行./script.sh?

    也许这很尴尬 但是当我在 Git shell 中工作时 我无法在 Windows 上运行 sh 文件 也许我必须安装一些东西 但我认为 Git 会支持 bash 命令 我知道 Windows 不使用 sh 文件 我正在执行安装步骤游戏结束
  • 使用 sed 将 old-link-url 替换为 new-link-url

    我正在 bash 中编写一个脚本 将 old link url 替换为 new link url 我的问题是 sed 由于斜杠而无法替换 url 如果我只输入一些文字就可以了 my code sed e s old link new lin
  • 使用 cURL 从 shell 发布 4GB 文件

    我尝试将文件大小为 4GB 的文件发布到 REST API cURL 不会上传此大小的文件 而是 POST 内容长度为 0 的文件 curl v i d work large png H Transfer Encoding chunked
  • ANSI 转义码在行尾有奇怪的行为

    重现步骤 考虑以下 shell 命令 echo e e 41mTest nTest2 e 0mTest3 它打印Test并在下一行中Test2具有红色背景 使用 ANSI 转义码 Test2后面直接是Test3这是无色的 行为 第一次执行此
  • shell脚本“x$VARIABLE”中x的用途[重复]

    这个问题在这里已经有答案了 我正在查看一些 shell 脚本 comarison shcu 中 x 的用途是什么 if x USER x RUN AS USER then su RUN AS USER c CATALINA HOME bin
  • 如何在fish shell脚本中获取程序名称?

    在 bash 中 与在 ruby 中一样 程序名称由 0 给出 鱼里有什么 如果有必要 我可以执行以下操作 set PROGRAM ps no header o args p self egrep o S 2 但我确信程序名称必须已经在某个
  • Bash 脚本 - 迭代 find 的输出

    我有一个 bash 脚本 其中需要迭代 find 命令输出的每一行 但似乎我正在迭代 find 命令中的每个单词 以空格分隔 到目前为止我的脚本看起来像这样 folders find maxdepth 1 type d for i in f
  • 在 shell 脚本中查找和替换

    是否可以使用 shell 在文件中搜索然后替换值 当我安装服务时 我希望能够在配置文件中搜索变量 然后在该值中替换 插入我自己的设置 当然 您可以使用 sed 或 awk 来完成此操作 sed 示例 sed i s Andrew James
  • 在powershell中检查文件是否可读且正常

    我是 powershell 新手 我想检查文件是否可读且正常 在 unix 中 我们可以使用 f 和 r 在一行中完成此操作 例如 以下 shell 脚本函数接受文件名作为参数并检查文件的可读性和规律性 与此等效的 powershell 是
  • 有一种简单的方法可以忽略时间戳来区分日志文件吗?

    我需要比较两个日志文件 但忽略每行的时间戳部分 确切地说是前 12 个字符 有没有一个好的工具 或者一个聪明的 awk 命令 可以帮助我 根据您使用的 shell 您可以改变方法 Blair https stackoverflow com
  • shell脚本中关联数组的时间复杂度

    我想知道在 shell 脚本中使用关联数组时如何构造 实现 另外 我想知道基于 shell 脚本的关联数组的时间复杂度是否是最佳的 因为我们可以使用字母和数字作为它们各自的键 编辑 他们使用什么哈希函数 如果您使用关联数组 则不能通过 使用
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp

随机推荐

  • Linux开机启动顺序简述

    Linux的开机启动顺序 第一步 xff1a 当然是加电了 第二步 xff1a 加载BIOS设置 xff0c 选择启动盘 这是因为因为BIOS中包含了CPU的相关信息 设备启动顺序信息 硬盘信息 内存信息 时钟信息 PnP特性等等 在此之后
  • IdentityServer4 实现 OpenID Connect 和 OAuth 2.0

    关于 OAuth 2 0 的相关内容 xff0c 点击查看 xff1a ASP NET WebApi OWIN 实现 OAuth 2 0 OpenID 是一个去中心化的网上身份认证系统 对于支持 OpenID 的网站 xff0c 用户不需要
  • 使用MakeSureDirectoryPathExists 创建多级目录

    The MakeSureDirectoryPathExists function creates all the directories in the specified DirPath beginning with the root BO
  • gnome桌面显示计算机,使用 GNOME 桌面

    Fedora 12 默认使用 GNOME 作为窗口管理器 Window Manager xff0c GNOME 的目标是基于自由软件 xff0c 为 Unix 或者类 Unix 操作系统构造一个功能完善 操作简单以及界面友好的桌面环境 xf
  • jQuery匹配各种条件的选择器用法

    hidden 匹配所有的不可见元素 xff0c input 元素的 type 属性为 34 hidden 34 的话也会被匹配到 Matches all elements that are hidden or input elements
  • 加ing形式的单词有哪些_利用英语原版教材轻松记单词快乐学语法

    英语中 xff0c 不定冠词有a和an两种形式 区别在an多了一个辅音字母n xff0c 其作用是在元音之间起分隔作用 强烈建议家长和小朋友一起重点学习英语中的五个元音并牢记相应的音标 很多朋友发音不好 xff0c 重要原因是元音不到位 x
  • linux 批量登录脚本,批量登陆linux主机脚本

    test sh bin bash dir 61 home test while read line do host 61 96 echo line awk print 1 96 passwd 61 96 echo line awk prin
  • Lottie - 轻松实现复杂的动画效果

    1 Lottie 介绍 Lottie 是 Airbnb 开源的一套跨平台的完整的动画效果解决方案 xff0c 设计师可以使用 Adobe After Effects 设计出漂亮的动画之后 xff0c 使用 Lottic 提供的 Bodymo
  • 【迁移】—Entity Framework实例详解

    好久没有在博客园更新博客了 xff0c 如今都换了新公司 前段时间写了关于EF迁移的文档 xff0c 今天拿出来作为这个系列的一篇吧 一 Entity Framework 迁移命令 xff08 get help EntityFramewor
  • 源码阅读技巧篇

    转载请注明原创出处 xff0c 谢谢 xff01 说在前面 本人水平有限 xff0c 下面的一些都是本人的思考与理解 xff0c 如果有那里不对 xff0c 希望各位大佬积极指出 xff0c 欢迎在留言区进行评论交流 探讨 主题 为什么要读
  • 文件服务器 之 VSFTPD的高手篇

    此文章细致的讲解了VSFTP的配置 环境 xff1a linux as 3 0 43 vsftpd 1 2 0 4的系统架构 xff0c 是在独立服务器下的哦 xff01 1 xff0e 配置本地组访问的FTP 首先创建用户组 test和F
  • [Windows Azure] Manage the Availability of Virtual Machines

    Manage the Availability of Virtual Machines You can ensure the availability of your application by using multiple Window
  • Myeclipse优化配置

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 作为企业级开发最流行的工具 xff0c 用Myeclipse开发java web程序无疑是最合适的 xff0c java web前端采用jsp来显示 xff0c myecl
  • AdjustTokenPrivileges(进程权限)

    AdjustTokenPrivileges 进程权限 原文地址 http hi baidu com xuqipi blog item 07f43363b3d690630d33fa90 html GetCurrentProcessID 得到当
  • Maven学习总结(八)——使用Maven构建多模块项目

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Maven学习总结 八 使用Maven构建多模块项目 在平时的Javaweb项目开发中为了便于后期的维护 xff0c 我们一般会进行分层开发 xff0c 最常见的就是分为d
  • Echache整合Spring缓存实例讲解

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 摘要 xff1a 本文主要介绍了EhCache xff0c 并通过整合Spring给出了一个使用实例 一 EhCache 介绍 EhCache 是一个纯Java的进程内缓存
  • XML学习总结(1)——XML入门

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 XML语法学习 学习XML 语法的目的就是编写 XML 一个XML文件分为如下几部分内容 xff1a 文档声明 元素属性注释 CDATA区 特殊字符 处理指令 xff0
  • 多个jar包合并成一个jar包(ant)

    https blog csdn net gzl003csdn article details 53539133 多个jar包合并成一个jar 使用Apache的Ant是一个基于Java的生成工具 这个工具的全名是another neat t
  • 国家电网大数据中心成立

    国家电网大数据中心成立国家电网大数据中心成立 5 月 21 日 xff0c 国家电网有限公司举行国网大数据中心成立揭牌仪式暨大数据发布会 xff0c 同时启动中国电力大数据创新联盟筹备工作 公司董事长 党组书记寇伟为国网大数据中心成立揭牌
  • shell的进阶编程

    shell的进阶编程 关于for for 变量名字 in 列表 xff1b do 循环体 done 例如for for NAME in WORDS do COMMANDS don其中前面的name就是个变量名 xff0c 而且不需要加 xf