shell数组

Shell编程基础

风流意气都作罢 提交于 2020-03-04 07:19:09
写之前我们先来搞清楚为什么要学shell,学习要有目的性 shell简单、灵活、高效,特别适合处理一些系统管理方面的小问题 shell可以实现自动化管理,让系统管理员的工作变得容易、简单、高效 shell脚本可移植性好,在unix/linux系统中可灵活移植,几乎不用任何设置就能正常运行 shell脚本可轻松方便读取和修改源代码,不需要编译 掌握shell可以帮你解决一些故障问题,比如脚本引起的故障问题 掌握shell是一个中级以上系统工程师必需要会的 掌握shell是你系统管理进阶的必经之路 掌握shell是你面试更高级职位的一块敲门砖 那什么时候不使用Shell 脚本? 资源密集型的任务,尤其在需要考虑效率时(比如排序,hash 等) 需要处理大任务的数学操作,尤其是浮点运算,精确运算,或者复杂的算术运算(这种情况一般使用C++或FORTRAN 来处理) 有跨平台移植需求(一般使用C 或Java) 复杂的应用,在必须使用结构化编程的时候(需要变量的类型检查,函数原型,等等) 对于影响系统全局性的关键任务应用。 对于安全有很高要求的任务,比如你需要一个健壮的系统来防止入侵,破解,恶意破坏等等. 项目由连串的依赖的各个部分组成。 需要大规模的文件操作 需要多维数组的支持 需要数据结构的支持,比如链表或数等数据结构 需要产生或操作图形化界面 GUI 需要直接操作系统硬件 需要 I/O

shell中返回一个数组

倖福魔咒の 提交于 2020-03-03 17:06:25
#!/bin/sh get_array() { a=123 b="123" c="abc" echo "$a \"$b\" $c" } echo \(`get_array`\) eval " tt=$(echo \( $(get_array) \) ) " echo "----XXX ${tt[0]}" echo "----XXX ${tt[1]}" echo "----XXX ${tt[2]}" echo "----XXX ${tt[3]}" echo "----XXX ${tt[4]}" echo "----XXX ${tt[5]}" 来源: 51CTO 作者: yaxinsn 链接: https://blog.51cto.com/yaxinsn/2417303

shell脚本学习——数组的练习

試著忘記壹切 提交于 2020-03-03 07:22:21
1 使用循环批量输出数组的元素 #!/bin/bash #使用循环批量输出数组的元素 array = ( a b c d e ) for (( i = 0 ; i < ${#array[@]} ; i ++ )) #从数组的第一个下标0开始,循环数组的所有下标 do echo ${array[i]} #打印数组元素 done 2 通过竖向列举方法定义数组元素并批量打印 #!/bin/bash #通过竖向列举方法定义数组元素并批量打印 array = ( westos redhat python linux ) for (( i = 0 ; i < ${#array[@]} ; i ++ )) do echo "This is NO. $i ,then content is ${array[i]} " done echo == == == == == == == == == == == == == == == == == == echo "array lenth: ${#array[@]} " 3 将命令结果作为数组元素定义并打印 #!/bin/bash #将命令结果作为数组元素定义并打印 dir = ( $( ls /array ) ) for (( i = 0 ; i < ${#dir[ * ]} ; i ++ )) do echo "This is NO. $i

shell之变量和引用

六月ゝ 毕业季﹏ 提交于 2020-02-29 04:39:56
一 变量 变量:本质上是程序中保存用户数据的一块内存空间,变量名就是内存空间地址。 Shell中:变量可有字母数字和下划线组成,只能以字母或下划线开头。 命名:PATH=/sbin JAVA_HOME=”/usr/lib” (变量名区分大小写) 在shell中,变量的数据类型无需显示低声明,变量的数据类型会根据不同操作有所变化。 (shell变量部分数据类型,统一按字符串存储,但根据变量的上下文环境,允许程序执行一些不同操作)。为了能执行加减法计算,shell为自动进行数据类型的转换,如果遇到含义非数字的字符串,则该字符串被转换成整数0。同时,在空串以及没有定义变量的情况下,变量值都会被转换为整数0。 例如,n=“” echo “n=$n” Echo “p=$p” 1.1变量的定义: Shell中可以直接使用变量,无需定义,如果变量的值包含空格,一定要用引号引起来。 declare attribute variable(控制变量相关属性) attribute 表示变量属性,variable表示名称,属性有: -p:显示所有变量值 -i:定义为整数 -r:定义为只读变量 -a:定义为数组变量 -f:显示所有自定义函数,包括名称和函数体 -x:变量设置成环境变量,随后的脚本和程序可以使用 例子: x=6/3 echo "$x" //6/3 #定义变量x为整数 declare -i x

linux基础学习 004 shell与变量

青春壹個敷衍的年華 提交于 2020-02-27 12:37:19
bash shell的功能 1.命令记忆功能 (history) ~/.bash_history 2.补全命令功能[Tab] 3.命令行别名设置功能 (alias,unalias) 4.作业控制,前台,后台控制 5.程序脚本(shell script) 6.通配符 shell的变量 显示变量: 使用echo $变量名 echo $PATH 自定义变量的设置: 变量=内容; 取消自定义变量: unset $变量名 变量设置注意事项: 1.等号两边不能直接接空格符; 2.变量名,英文,数字; 3.export使自定义变量成为环境变量, export 变量名 ; 4.双引号仍可保留变量内容,单引号将是一般字符. . 环境变量相关命令: env/export //列出所有环境变量 set //查看所有变量(环境变量+自定义变量) . 变量键盘读取,数组与声明 read [-pt] variable //读取来自键盘输入的变量 -p:后面可接提示符 -t:后面接秒数 declare [-aixr] variable //声明变量类型 -a: 数组 -i: 整型,base环境下数组计算,默认最多达到整型. -x: 将variable变成环境变量,+x,相当于取消操作. -r: readonly类型.不能更改. 数组设置方法: var[index]=content echo ${var[i]}

Linux Shell 中各种括号的使用: ${ }、$( )、` `、$[ ]、$(( ))、[ ]、[[ ]]、(( ))

淺唱寂寞╮ 提交于 2020-02-27 10:51:06
1、 ${} : 引用变量,还有一些其他的功能: ​fname=/aa1/aa2/aa3/dd.ee.txt #: 从左边开始找起。##就是从那一边找起的最后一个 ${fname#*/} 去掉左边第一个 / 及其左边的字符串:aa1/aa2/aa3/dd.ee.txt ${fname##*/} 去掉左边最后一个 / 及其左边的字符串:dd.ee.txt ${fname#*.} 去掉左边第一个 . 及其左边的字符串:ee.txt ${fname##*.} 去掉左边最后一个 . 及其左边的字符串:txt %:从右边开始找起。%%就是从那一边找起的最后一个 ${fname%/*} 去掉右边第一个 / 及其右边的字符串:/aa1/aa2/aa3 ${fname%%/*} 去掉右边最后一个 / 及其右边的字符串:(空值) ${fname%.*} 去掉右边第一个 . 及其右边的字符串:/aa1/aa2/aa3/dd.ee ${fname%%.*} 去掉右边最后一个 . 及其右边的字符串:/aa1/aa2/aa3/dd 使用冒号(:) 截取一段字符串,${str:start:length} ${fname:0:3} 截取index从0开始的 4 个字节:/aa1 ${fname:4:4} 截取index从4开始的 4 个字节:/aa2 使用单斜杠(/)和双斜杠(//)对变量值里的字符串作替换 $

Shell编程之shell基础

∥☆過路亽.° 提交于 2020-02-26 01:21:16
一、shell介绍 1.编程语言分类 2.shell简介 3.shell脚本 1)什么是shell脚本? 2)什么时候用到脚本? 3)shell脚本能干啥? 4)shell脚本的基本写法 5)shell脚本的执行方法 二、变量的定义 1.变量是什么? 2.什么时候需要定义变量? 3.变量如何定义? 4.变量的定义规则 1)变量名区分大小写 2)变量名不能有特殊符号 3)变量名不能以数字开头 4)等号两边不能有任何空格 5)变量名尽量做到见名知意 5.变量的定义方式有哪些? 1)基本方式 2)命令执行结果赋值给变量 3)交互式定义变量(read) 4)定义有类型的变量(declare) 6.变量的分类 1)本地变量 2)环境变量 3)全局变量 4)系统变量 三、简单四则运算 1.四则运算符号 2.了解i++和++i 四、扩展补充 1.数组定义 1)数组分类 2)普通数组定义 3)数组的读取 4)关联数组定义 2.其他变量定义 一、shell介绍 前言: 计算机只能认识(识别)机器语言(0和1),如(11000000 这种)。但是,我们的程序猿们不能直接去写01这样的代码,所以,要想将程序猿所开发的代码在计算机上运行,就必须找"人"(工具)来==翻译成机器语言==,这个"人"(工具)就是我们常常所说的 ==编译器== 或者 ==解释器== 。 1. 编程语言分类 编译型语言: ​ =

学习之shell脚本

做~自己de王妃 提交于 2020-02-25 11:40:44
第一行:#!/bin/bash --> #! 标记脚本的解释器 脚本: #!/bin/bash     echo "hello world" 赋予执行权限 chmod +x ./test.sh 执行脚本:./test.sh 定义变量 时不需要 $ 符号 :td='date "+%y%m%d"' 1.变量名和符号之间不能有空格 2.首个字符必须为字母 3.中间不能有空格,可以使用划线(_) 4.不能使用标点符号和 bash 中的关键字 除了显示赋值,还可用语句直接给变量赋值 for file in 'ls /etc' 将 /etc目录下的文件名循环出来 使用一个定义过的变量,只需在变量名前加上 $ 符号即可 echo $td 或 echo ${td} 对同一个变量名,可以进行二次赋值 eg: td='date "+%m%d"' 只读变量:readonly 定义变量为只读变量,变量值不可更改 url="http://www.baidu.com" readonly url url="http://www.tx.com" --> 报错 删除变量: unset variable_nae,不能删除只读变量 shell存在三种变量:①局部变量:脚本或命令中定义,仅在当前脚本有效           ②环境变量:所有程序有效           ③shell变量:由shell程序设置的变量

第12章 学习shell脚本

风格不统一 提交于 2020-02-24 12:52:40
12.1 什么是shell脚本 就字面上的意思,即针对shell所写的剧本,shell脚本是利用shell的功能所写的一个程序,这个程序使用纯文本文件,将一些shell的语法和命令(也可以是外部命令)写在里面,还能搭配正则表达式、管道命令和数据流重定向等功能,以达到我们需要的处理目的,执行一个“shell脚本”文件,就能一次执行多个命令,shell脚本还提供数组、循环、条件与逻辑判断等功能,用户可以直接用shell来编写程序,而不必使用类似C语言等传统程序语言来编写,shell脚本可以简单地被看成是批处理文件,也可以被说成是程序语言,且由于这个程序语言都是利用shell与相关工具命令,所以不需要编译即可执行 1学习shell脚本的作用 自动化管理:管理一台主机每天要进行的任务有查询日志文件、跟踪流量、监控用户使用主机状态、主机各项硬件设备状态、主机软件更新查询等,你可以每天手动处理这些事情,也可以写个简单的shell脚本,让它来帮你处理每天的任务 帮助管理系统:CentOS6.x以前的版本中系统服务启动的接口是在/etc/init.d/这个目录下,这个目录下所有文件都是脚本文件,另外,包括启动过程也要利用shell脚本来帮忙查询系统的相关设置参数,然后再代入各个服务中,从CentOS7开始,/etc/init.d/这个脚本启动的方式由systemd所替代

经典shell面试题

有些话、适合烂在心里 提交于 2020-02-19 08:46:24
70个经典的 Shell 脚本面试问题 转载自: http://www.imooc.com/article/1131 1) 如何向脚本传递参数 ? ./script argument 例子 : 显示文件名称脚本 ./show.sh file1.txt cat show.sh #!/bin/bash echo $1 ( LCTT 译注:谢谢某匿名访客的提醒,原题有误,修改之。) 2) 如何在脚本中使用参数 ? 第一个参数 : $1,第二个参数 : $2 例子 : 脚本会复制文件(arg1) 到目标地址(arg2) ./copy.sh file1.txt /tmp/ cat copy.sh #!/bin/bash cp $1 $2 3) 如何计算传递进来的参数 ? $# 4) 如何在脚本中获取脚本名称 ? $0 5) 如何检查之前的命令是否运行成功 ? $? 6) 如何获取文件的最后一行 ? tail-1 7) 如何获取文件的第一行 ? head-1 8) 如何获取一个文件每一行的第三个元素 ? awk'{print $3}' 9) 假如文件中每行第一个元素是 FIND,如何获取第二个元素 awk'{ if ($1 == "FIND") print $2}' 10) 如何调试 bash 脚本 将 -xv 参数加到 #!/bin/bash 后 例子: #!/bin/bash –xv 11