shell数组

使用Shell数组 二

匿名 (未验证) 提交于 2019-12-02 23:42:01
( Creative Commons ) 步骤二:编写getips.sh脚本 1)任务需求及思路分析 使用read命令从键盘读入用户指定的IP地址,每次读入一个。 因为需要读多次,直到输入“EOF”时结束,所以可采用while循环结构,循环条件为输入的字符串不为“EOF”。 要求用数组保存每次输入的IP地址,那肯定从下标为0的元素开始存放,赋值操作放在循环体内,下标的递增通过一个变量i控制。 遇“EOF”结束while循环后,输出整个数组的内容,并显示数组元素的个数、第1个录入的IP地址。 2)根据实现思路编写脚本文件 [ root@svr5 ~]# vim getips . sh #!/bin/bash IP = "" //定义IP地址初值 i = 0 //控制下标增长的变量 while read - p "请添加IP地址(输EOF结束):" IP && [ "$IP" != "EOF" ] do IPADDS [ $i ]= "$IP" //每次录入赋值给不同的数组元素 let i ++ done echo "您已录入的IP地址如下:" echo $ { IPADDS [@]} //输出整个数组 echo "总共包括 ${#IPADDS[@]} 个地址," //报告数组元素的个数 echo "其中第1个IP地址是:${IPADDS[0]}" //输出第1个元素 [ root

Linux shell之数组

匿名 (未验证) 提交于 2019-12-02 21:59:42
引言   在Linux平台上工作,我们经常需要使用shell来编写一些有用、有意义的脚本程序。有时,会经常使用shell数组。那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解,shell中的数组。 数组的定义   何为数组?学过计算机编程语言的同学都知道,数组的特性就是一组数据类型相同的集合(不包括有一些编程语言提出来的关联数组的概念)。那么shell中数组是怎么定义的呢,我们来看两种数据类型:一是数值类型,二是字符串类型;虽然shell本身是弱类型的,但也可以这么区分。    数值类型的数组: 一对括号表示数组,数组中元素之间使用“空格”来隔开。   arr_number=(1 2 3 4 5);    字符串类型数组: 同样,使用一对括号表示数组,其中数组中的元素使用双引号或者单引号包含,同样使用“空格”来隔开。   arr_string=("abc" "edf" "sss"); 或者 arr_string=('abc' 'edf' 'sss'); 数组的操作   我们使用数值类型数组arr_number=(1 2 3 4 5)做为源数组进行相关的讲解:获取数组长度,读取某个下标的值,对某个下标赋值,删除、分配和替换以及遍历。提一个知识点,我们在shell里面想获取某个变量的值,使用$符开头,如:$a或者${a}即可。    获取数组长度  

()、(())、[]、[[]]、{}的作用

老子叫甜甜 提交于 2019-12-02 20:20:33
目录 单括号(): 单中括号[ ]: 双中括号[[]]: 大括号{}: Linux Shell脚本攻略:shell中各种括号()、(())、[]、[[]]、{}的作用 技巧小结: 字符串比较用双中括号[[ ]];算数比较用单中括号[ ]——左右留空格 算数运算用双小括号(( )) ;shell命令及输出用小括号( )——左右不留空格 快速替换用花括号{ }——左右留空格 反单引号起着命令替换的作用 单括号(): 另开命令组——小括号中的内容会开启一个子shell独立运行;括号中以分号连接,最后一个命令不需要;各命令和括号无空格 得到命令输出——a=$(command), 等同于a=$`command`,得到命令输出传递给变量a 初始化数组——array=(a b c d) 双括号(()): 省去$符号的算术运算—— for((i=0;i<5;i++)); if (($i<5)); a=5; ((a++)) 可将 $a 重定义为6;括号内支持多个表达式用逗号分开。 C语言规则运算——$((exp)),exp为符合C语言规则的运算符,表达式 跨进制运算——二进制、八进制、十六进制运算时,输出结果全都自动转化成了十进制。如:echo $((16#5f)) 结果为95 (16进位转十进制) 单中括号[ ]: 字符串比较——==和!= 整数比较——不等于:-gt:大于;-lt :小于;-eq

shell分享

折月煮酒 提交于 2019-12-02 20:18:58
shell脚本分享 一、介绍shell Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 Shell 脚本(shell script),是一种为 shell 编写的脚本程序。 业界所说的 shell 通常都是指 shell 脚本。 shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。 为什么使用shell脚本? 简化对于多个重复命令的操作,适用于批处理。(原本是觉得docker没有怎么简化操作,每次都要敲那么多代码,后来发现可以用shell脚本写脚本批处理运行之)。 shell脚本以.sh为文件名的后缀(不强制,规范而已) 脚本第一行以 #!/bin/bash 或者 #!/bin/sh 开头(不是必须的) 执行: 1. chmod +x 脚本名 : 授予执行权 然后可以 ./文件名运行 2. sh 脚本名 3. /bin/bash 脚本名 4. bash 脚本名 二、代码实操 hello world vim helloworld.sh #!/bin/bash echo "hello wolrd!!!" 运行 sh

shell基础 -- 基本语法

微笑、不失礼 提交于 2019-12-02 19:21:39
目录 1.1 变量的命名 1.2 变量的赋值 1.3 变量的类型 2.1 使用 expr 命令对算术表达式求值 2.2 使用 $(( ... )) 的方式对算术表达式求值 3.1 bash 计算器 bc 3.2 在脚本中使用 bc 5.1 if 语句 5.2 case 语句 5.3 for 语句 5.4 while 与 until 语句   本文介绍一下 shell 的语法。 一、变量   在 shell 里,使用变量之前通常并不需要事先为他们做出声明,需要使用的时候直接创建就行了。 默认情况下,所有变量都被看做字符串并以字符串来存储,即使它们被赋值为数值时也是如此 。shell 和一些工具会在需要时把数值型字符串转换成对应的数值以对它们进行操作。 回到顶部 1.1 变量的命名   shell 变量的命名规则如下: 开头是一个字母或下划线,后面可以接任意长度的字母、数字或下划线符号,变量名的字符长度并无限制 (Bourne shell中)。不过为了兼容性(一些早期的shell里变量名是有长度限制的),一般还是不要超过255个字符。另外, Linux 区分大小写 。当用户自己定义变量的时候,要注意变量名不能与 shell 中的关键字重名。 回到顶部 1.2 变量的赋值   shell 中变量的赋值方式如下: 变量名=值 # 注意 赋值语句两边不能有空格   注意,

第七章 Shell正则应用

大憨熊 提交于 2019-12-02 16:38:31
1. 正则表达式概述 01. 什么是正则表达式 正则表达式 regular expression , RE是一种字符模式,用于在查找过程中匹配指定的字符。 02. 为什么要使用正则表达式? 在工作中,我们时刻面对着大量的日志,程序,以及命令的输出。迫切的需要过滤我们需要的一部分内容,甚至是一个字符串。比如: 现在有一个上千行的文件,我们仅需要其中包含"root"的行,怎么办? 此时就需要使用到正则表达式的规则来筛选想要的内容。 03. 正则表达式注意事项 1.正则表达式应用非常广泛,存在于各种语言中,例如:php,python,java等。2.正则表达式和通配符特殊字符是有本质区别的3.要想学好grep、sed、awk首先就要掌握正则表达式。4.注意正则神坑,中文符号。 2. 正则表达式规则 正则表达式描述 \转义符,将特殊字符进行转义,忽略其特殊意义 ^匹配行首,^是匹配字符串的开始 $匹配行尾,$是匹配字符串的结尾 ^$表示空行. (点)匹配换行符之外的任意单个字符 [ ]匹配包含在[字符]之中的任意一个字符 [^]匹配[^]之外的任意一个字符 [a-z]匹配[]中指定范围内的任意一个字符 ?匹配其前面的字符1次或者0次+匹配其前面的字符1次或者多次 匹配其前面的字符0次或者多次**.** *表示所有( )匹配表达式,创建一个用于匹配的字符串 {n}匹配之前的项n次

shell编程-学习

梦想的初衷 提交于 2019-12-02 15:29:23
Shell 编程入门 走进 Shell 编程的大门 为什么要学Shell? 什么是 Shell? Shell 编程的 Hello World Shell 变量 Shell 编程中的变量介绍 Shell 字符串入门 Shell 字符串常见操作 Shell 数组 Shell 基本运算符 算数运算符 关系运算符 逻辑运算符 布尔运算符 字符串运算符 文件相关运算符 shell流程控制 if 条件语句 for 循环语句 while 语句 shell 函数 不带参数没有返回值的函数 有返回值的函数 带参数的函数 Shell 编程入门 走进 Shell 编程的大门 为什么要学Shell? 学一个东西,我们大部分情况都是往实用性方向着想。从工作角度来讲,学习 Shell 是为了提高我们自己工作效率,提高产出,让我们在更少的时间完成更多的事情。 很多人会说 Shell 编程属于运维方面的知识了,应该是运维人员来做,我们做后端开发的没必要学。我觉得这种说法大错特错,相比于专门做Linux运维的人员来说,我们对 Shell 编程掌握程度的要求要比他们低,但是shell编程也是我们必须要掌握的! 目前Linux系统下最流行的运维自动化语言就是Shell和Python了。 两者之间,Shell几乎是IT企业必须使用的运维自动化编程语言,特别是在运维工作中的服务监控、业务快速部署、服务启动停止

理论+实操:shell之case语句for/while/until循环语句、函数、数组-满满的干货

♀尐吖头ヾ 提交于 2019-12-02 13:52:00
前言: 单引号表示纯符号 用双引号表字符串 case多分支语句 循环语句 for循环语句 while循环语句 until循环语句 shell函数 shell数组 一 : case语句的结构 1.1 case结构 多分支表现形式:if语句,case语句 case 语句可以使用正则表达式,正则表达式后面会去阐述 针对变量的不同取值,分别执行不同的命令程序 case 中;;表示一句话的结束 如果匹配某一个固定值,大多数用caes,其适用于某一个固定值 如果匹配某一个区间范围,大多数用if else 语句,其适用于一个范围 *后面 不需要加;; 1.2 case执行过程流程图 case针对变量的不同取值,分别执行不同的命令序列 case变量匹配的是模式,if变量匹配的是条件 1.3 case语句应用示例 1.3.1 示例1:击键类型识别 提示用户输入一个字符 判断出该字符是字母、数字或者其他字符 #/bin/bash read -p "请按个键,我可以测试年的键是字母数字或是其他字符" jian case "$jian" in [0-9]) echo "你按的是数字" ;; [a-z]|[A-Z]) echo "你按的是字母" ;; *) echo "你按的是特殊字符" esac [root@localhost opt]# sh shibiejijian.sh 请按个键

Shell - 数组

牧云@^-^@ 提交于 2019-12-02 10:49:31
文章目录 Shell - 数组 1、基本内容和定义形式 2、读取形式 3、读取所有的元素 4、读取数组的长度 Shell - 数组 1、基本内容和定义形式 只支持一维数组 初始化时可以不指定数组大小 元素下标从0开始 定义形式1 ar = ( v1 v2 v3 v4 ) 定义形式2 ar [ 0 ] = v1 ar [ 1 ] = v2 ar [ 2 ] = v3 ar [ 3 ] = v4 2、读取形式 ${ar[index]} 3、读取所有的元素 有2种 ${ar[*]} ${ar[@]} 4、读取数组的长度 有2种 ${#ar[*]} ${#ar[@]} 来源: https://blog.csdn.net/qq_15071263/article/details/102753954

Linux shell脚本笔记

青春壹個敷衍的年華 提交于 2019-12-02 09:38:55
shell 命令解释器 是用来解释用户对系统的操作 使用 cat /etc/shells 可以查看 系统安装的shell Linux 启动过程 : BIOS -> MBR -> BootLoader(grub) -> kernel -> systemd -> 系统初始化 -> shell   BIOS 基本 输入输出 系统 选择U盘启动还是硬盘启动;MBR 硬盘里 可引导 的部分;BootLoader(grub) 启动内核工具 选择启动的内核;   kernel 启动内核;systemd 1号进程 其余所有进程派生于它;然后才是系统初始化 启动shell 执行脚本 的四种方式   1 bash ./filename.sh    2 ./filename.sh   3 souce ./filename.sh   4 . ./filename.sh   1和2 执行脚本时 会创建一个 新的进程 来执行 3和4执行脚本时会用 当前进程 来执行(环境变量是当前系统的环境变量) (不产生新进程执行的命令叫做 内建命令   1 3 4 执行脚本时脚本可以不拥有 执行权限 2 执行脚本时必须有可执行权限 管道 '|' 两个 进程 之间的 通信 第一个进程的输出当作第二个进程的输入 a|b|c a的输出当作b的输入 b的输出当作c的输入 (管道应该 规避内建命令 重定向