shell数组

[转载]shell 数组定义遍历

跟風遠走 提交于 2019-12-04 20:29:15
转自:https://www.coder4.com/archives/3853Shell编程中的数组定义、遍历 4 Replies 数组定义: arr=(1 2 3 4 5) # 注意是用空格分开,不是逗号!! 数组定义法2: array array[0]="a" array[1]="b" array[2]="c" 获取数组的length(数组中有几个元素): ${#array[@]} 遍历(For循环法): for var in ${ arr[@] }; do echo $var done 遍历(带数组下标): for i in "${!arr[@]}"; do printf "%s\t%s\n" "$i" "${arr[$i]}" done 遍历(While循环法): i=0 while [ $i -lt ${ #array[@] } ] do echo ${ array[$i] } let i++ done 遍历(for循环次数) for i in {1..5} do echo "Welcome $i times" done 向函数传递数组: 由于Shell对数组的支持并不号,所以这是一个比较麻烦的问题。 翻看了很多StackOverFlow的帖子,除了全局变量外,无完美解法。 这里提供一个变通的思路,我们可以在调用函数前,将数组转化为字符串。 在函数中,读取字符串

Shell

北战南征 提交于 2019-12-04 18:20:39
一、 Shell 1. Shell 简介 1. Shell 是一个用 C 语言编写的程序,它既是一种命令语言,又是一种程序设计语言,它是用户使用 Linux 的桥梁2. Shell 脚本(Shell Script),是一种为 Shell 编写的脚本程序3. 用户开发的 Shell 脚本可以驻留在命令搜索路径的目录之下(通常是 /bin、/usr/bin 等),像普通命令一样使用。如果打算反复使用编好的 Shell 脚本,可以开发出自己的新命令4. Linux 的 Shell 种类众多,常见的有: 1)Bourne Shell(/usr/bin/sh 或 /bin/sh) 2)Bourne Again Shell(/bin/bash) 3)Shell for Root(/sbin/sh) ....5. 本文关注的是 Bash,也就是 Bourne Again Shell 1)由于易用和免费,Bash 在日常工作中被广泛使用 2)Bash 也是大多数 Linux 系统默认的 Shell 3)一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以 #!/bin/sh 也可以写为 #!/bin/bash,#! 是一个约定的标记,其路径告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell6. Shell 脚本的编写 1)使用 vi/vim

shell-基础

本秂侑毒 提交于 2019-12-04 10:43:25
Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出屏幕返回给用户。 这种对话方式可以是: 交互的方式:从键盘输入命令,通过/bin/bash的解析,可以立即得到Shell的回应 [root@localhost ~]# echo ls |bash anaconda-ks.cfg tsar [root@localhost ~]# ls anaconda-ks.cfg tsar 非交互的方式: 脚本 什么是Shell脚本 命令、变量和流程控制语句等有机的结合起来 shell脚本擅长处理纯文本类型的数据,而linux中,几乎所有的配置文件,日志,都是纯文本类型文件 脚本语言的种类 一、编译型语言 定义: 指用专用的编译器,针对特定的操作平台(操作系统)将某种高级语言源代码一次性翻译成可被硬件平台直接运行的二进制机器码(具有操作数,指令、及相应的格式),这个过程叫做编译(./configure make makeinstall );编译好的可执行性文件(.exe),可在相对应的平台上运行(移植性差,但运行效率高)。。 典型的编译型语言有, C语言、C++等。 另外,Java语言是一门很特殊的语言,Java程序需要进行编译步骤,但并不会生成特定平台的二进制机器码,它编译后生成的是一种与平台无关的字节码文件(

Shell脚本编程

本秂侑毒 提交于 2019-12-04 04:43:09
一、基本 bash shell命令 创建文件 : touch 链接文件:符号链接:是一个实实在在的文件,两个通过符号链接在一起的文件,彼此的内容并不相同。使用ln -s命令。 硬链接:会创建独立的虚拟文件,其中包含了原始文件的信息及位置。但他们从根本上而言是同一个文件。原始文件必须事先存在,使用ln命令。 查看文件类型 : file 查看整个文件 : cat , more , less 查看部分文件 : tail , head 二、更多shell命令 探查进程 : ps , 常用 ps -ef , ps -l 实时监测进程 : top。第一部分显示系统的概况:第一行显示当前时间、系统运行时间、登录的用户数以及系统的平均负载(三个值代表最近1min、5min、15min)如果近15min内的平均负载都很高,说明系统可能有问题。 第二行显示了进程概要信息:有多少进程处在运行、休眠、停止或是僵化状态 下一行显示了CPU的概要信息。 紧跟其后的两行说明了系统内存的状态。第一行是系统的物理内存:总共多少内存,当前用了多少,还有多少。后一行表示同样的信息,不过针对系统交换空间。 最后一行显示当前运行中的进程纤细列表。 PID:进程ID; USER:进程属主名字; PR:进程优先级; NI:进程的谦让值; VIRT:进程占用的虚拟内存总量; RES:进程占用物理内存总量; SHR

shell

ぃ、小莉子 提交于 2019-12-03 14:59:39
三、函数的参数传递 1、使用变量的方式传递固定值 [root@manager-61~/cxp]# cat function.lx02.sh #!/usr/bin/bash fun_1(){ echo "$num" } num=10 fun_1 [root@manager-61~/cxp]# sh function.lx02.sh 10 2、使用变量的方式传递可变的值 [root@manager-61~/cxp]# cat function.lx03.sh #!/usr/bin/bash fun_1(){ echo "$num" } num=$1 #执行脚本时将脚本的位置变量的第一个参数传给num fun_1 [root@manager-61~/cxp]# sh function.lx03.sh 6 6 [root@manager-61~/cxp]# sh function.lx03.sh hello hello 3、函数传参示例,传递多个位置参数 `方式一` [root@manager-61~/cxp]# cat function.lx04.sh #!/usr/bin/bash fun_1(){ echo "$1" } fun_1 $1 fun_1 $2 fun_1 $3 [root@manager-61~/cxp]# sh function.lx04.sh 11 22 33 11

shell 数组

无人久伴 提交于 2019-12-03 11:41:49
1.什么是数组 数组其实也算是变量,传统的变量只能存储一个值,但数组可以存储多个值 2.数组的分类 普通数组:只能使用整数,作为数组索引 关联数组:只能使用字符串,作为数组索引 2. 数组基本使用 01. 普通数组仅能使用整数来作为索引 #普通数组赋值方式 1.方式一:针对每个索引进行赋值 [root@gjy ~]# array1[0]=pear [root@gjy ~]# array1[1]=apple [root@gjy ~]# array1[2]=orange [root@gjy ~]# array1[3]=peach 2.方式二:一次赋多个值,数组名=(多个变量值) [root@gjy ~]# array2=(tom jack alice) [root@gjy ~]# array3=(tom jack alice "bash shell") [root@gjy ~]# array4=(1 2 3 "linux shell" [20]=puppet) 3.方式三:将该文件中的每一个列作为一个元数赋值给数组array5,默认以空格为分割符 [root@gjy ~]# array5=(`cat /etc/passwd`) 02. 如何查看普通数组的赋值与访问数组的内容 1.定义普通数组,其实也可以不用定义 [root@gjy ~]# declare -a array 2

shell脚本――字符串 数组

匿名 (未验证) 提交于 2019-12-03 00:27:02
字符串 字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。 单引号 str = 'this is a string' 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。 双引号 your_name = 'qinjx' str = "Hello, I know you are \"$your_name\"! \n" 双引号的优点: 双引号里可以有变量 双引号里可以出现转义字符 拼接字符串 your_name = "qinjx" greeting = "hello, " $your_name " !" greeting_1 = "hello, ${your_name} !" echo $greeting $greeting_1 获取字符串长度 string = "abcd" echo $ {# string } #输出 4 提取子字符串 2 4 string = "runoob is a great site" echo $ { string : 1 : 4 } # 输出 unoo 查找子字符串 查找字符 " i s " 的位置: string = "runoob is a great company" echo `expr index "$string" is`

Shell编程之case多分支语句、循环语句(for、while等)、Shell函数、Shell数组

匿名 (未验证) 提交于 2019-12-03 00:14:01
case多分支语句 case语句的结构: 针对变量的不同取值,分别执行不同的命令列 case 变量值 in 模式 1 ) 命令序列 1 ;; 模式 2 ) 命令序列 2 ;; ..... *) 默认命令序列 esac 示例 : 字符类型识别: 提示用户输入一个字符; 判断出该字符是字母、数字或者其他字符。 脚本如下: [ root@localhost opt ]# vim test01 . sh #!/bin/bash read - p "请输入一个字符:" key case $key in [ a - z ]|[ A - Z ]) echo "你输入的是字母" ;; [ 0 - 9 ]) echo "你输入的是数字" ;; *) echo "你输入的是特殊符号" esac 执行结果如下: [ root@localhost opt ]# chmod + x test01 . sh [ root@localhost opt ]# ./ test01 . sh 请输入一个字符: 3 你输入的是数字 [ root@localhost opt ]# ./ test01 . sh 请输入一个字符: d 你输入的是字母 [ root@localhost opt ]# ./ test01 . sh 请输入一个字符:# 你输入的是特殊符号 [ root@localhost opt ]# 循环语句

Shell 编程 数组

匿名 (未验证) 提交于 2019-12-03 00:13:02
本篇主要写一些 shell 脚本函数的使用。 数组名=(value0 value1 vlaue2 ...) 数组名=([0]=value [1]=value [2]=vlaue ...) 列表名="value0 value1 vlaue2 ..." 数组名=($列表名) 数组名[0]="value" 数组名[1]="value" 数组名[2]="value" ... ${#数组名[@]} ${#数组名[*]} ${数组名[下标]} for v in ${数组名[@]};do echo $v;done for v in ${数组名[*]};do echo $v;done Demo #!/bin/bash num=(11 22 33 44 55) # 遍历 for v in ${num[*]} do echo $v done # 加1 for ((i=0;i<${#num[*]};i++)) do let num[i]++ echo ${num[i]} done [root@localhost ~]# vim arr.sh [root@localhost ~]# chmod +x arr.sh [root@localhost ~]# ./arr.sh 11 22 33 44 55 12 23 34 45 56 来源:博客园 作者: LinSenGeGe 链接:https://www

shell 变量的高级用法

匿名 (未验证) 提交于 2019-12-02 23:45:01
案例:从头开始匹配,将符合最短的数据删除 ( # ) variable_1="I love you, Do you love me" echo $variable_1 variable_2=${variable_1#*ov} echo $variable_2    案例:从头开始匹配,将复合最短的数据删除( ## ) varible_3=${variable_1##*ov} echo $varible_3 案例:替换字符串,只替换第一次匹配成功的( / ) echo $PATH var6=${PATH/bin/BIN} echo $var6    案例:替换字符串,符合条件的全部替换 ( // ) var7=${PATH//bin/BIN} echo $var7    var=${str-expr}    如果变量 str 没有定义,那么var=expr 如果变量 str的字符串中有值,那么 变量 var 的值就等于 str变量的值 案例1 var="hello world" len=${#var} echo $len    案例2 var1="zhang biao" len=`expr length "$var1"` echo $len 获取字串在字符串中的索引位置 (把字串拆分成一个个的字串,最先匹配到的第一个就会返回) 案例 var="quickstart is a app"