shell数组

Linux shell脚本笔记

萝らか妹 提交于 2020-04-07 06:21:59
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的输入 (管道应该 规避内建命令 重定向

shell脚本编程高级篇

徘徊边缘 提交于 2020-03-21 12:40:58
SHELL脚本编程进阶 循环执行:简单来说就是把一些指令重复循环。 循环代码具体的指令有三种: for , while , until其中for, while用的最多。 for循环 for 变量名 in 列表;do 循环体 done 关键字的帮助都是用help来查询。 for循环语法:在shell编程中 for,in,do,done。这些都是他的关键字,其中循环的指零就放在do和done之间。 WORDS决定了循环次数。 循环的次数由in 后面跟的WORDS(字符串)的数量决定。字符串的个数决定了do和done之间的指令执行的次数。 $ :for认为是一个整体 br/>$@:for认为是独立的参数 for循环逻辑:↓↓ :这条命令意思是,将i变量为1 22 33 等于说i同时等于这3个变量然后用到$i把变量显示出来第一次i就是1第二次i就是22第三次i就是333这就是for循环的逻辑。 :还可以使用花括号或字母一次性显示完。 for脚本编辑语法:,脚本意思是i变量为arg而$@是独立的一个整体执行为脚本后面跟123代表arg is 独立的123。 :这是重复创建10次用户的意思i变量为{1..10}这个范围 :这是让FILE变量为userlist.txt这个文件然后执行这个文件里有多少用户,在来循环多少次。 :不用创建脚本也可以在外执行for结尾必须使用;隔开done

Shell脚本之awk详解

烈酒焚心 提交于 2020-03-17 00:39:20
一.基本介绍 1.awk: awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的。awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域(段),域和域之间使用分割符分割。 2.功能:流控制、数学运算、进程控制、内置的变量和函数、循环和判断 3.工作原理: awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理。 (1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里 (2)使用内置的变量FS(段的分隔符,默认用的是空白字符),分割这一行,把分割出来的每个段存到相应的变量$(1-100) (3)输出的时候按照内置变量OFS(out FS),输出 (4)读入下一行继续操作 简单实例 [root@tx3 ~]# echo "this is a book" > awk.txt [root@tx3 ~]# awk '{print $2,$1,$3,$4}' awk.txt is this a book 4. Awk常用内置变量表: 1 $0 当前记录(作为单个变量) 2 $1~$n 当前记录的第n个字段,字段间由FS分隔 3 FS 输入字段分隔符 默认是空格 4 NF 当前记录中的字段个数,就是有多少列 5 NR 已经读出的记录数,就是行号,从1开始 6 RS 输入的记录他隔符默 认为换行符 7 OFS

Shell 脚本面试问题大全

两盒软妹~` 提交于 2020-03-16 11:59:36
1) 如何向脚本传递参数 ? ./script argument 例子 : 显示文件名称脚本 ./show.sh file1.txt cat show.sh #!/bin/bash cat $1 2) 如何在脚本中使用参数 ? 第一个参数 : 1 , 第 二 个 参 数 : 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) 举例如何写一个函数 ? function example { echo "Hello world!" } 12) 如何向连接两个字符串 ? V1=

Linux shell必知必会

我的梦境 提交于 2020-03-14 20:42:44
我个人很喜欢使用 Linux 系统,虽然说 Windows 的图形化界面做的确实比 Linux 好,但是对 脚本 的支持太差了。一开始有点不习惯 命令 行操作,但是熟悉了之后反而发现移动鼠标点点点才是浪费时间的罪魁祸首。那么对于 Linux 命令 行,本文不是介绍某些命令的用法,而是说明一些简单却特别容易让人迷惑的细节问题。 1、标准输入和命令参数的区别。 2、在后台运行命令在退出终端后也全部退出了。 3、单引号和双引号表示字符串的区别。 4、有的命令和sudo一起用就 command not found。 一、标准输入和参数的区别 这个问题一定是最容易让人迷惑的,具体来说,就是搞不清什么时候用管道符|和文件重定向>,<,什么时候用变量$。 比如说,我现在有个自动连接宽带的 shell 脚本 connect.sh,存在我的家目录: $ where connect.sh /home/fdl/bin/connect.sh 如果我想删除这个脚本,而且想少敲几次键盘,应该怎么操作呢?我曾经这样尝试过: $ where connect.sh | rm 实际上,这样操作是错误的,正确的做法应该是这样的: $ rm $(where connect.sh) 前者试图将where的结果连接到rm的标准输入,后者试图将结果作为命令行参数传入。

转 shell awk 使用详解

此生再无相见时 提交于 2020-03-14 11:30:32
awk简介 awk: 中文意思是报告生成器 能够根据我们输入的信息,将信息格式化以后显示,将定义好的信息以比较美观(直观)的方式显示出来出现比较早,继而出现了new awk(nawk)在windows上实现,gawk, awk实现在linux上。awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。awk分别代表其作者姓氏的第一个字母,分别是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的GNU版本,它提供 了Bell实验室和GNU的一些扩展。下面就对awk进行介绍。 awk使用的基本格式: 1 2 3 # awk [options] 'script' file1 file2, ... # awk [options] 'PATTERN { action }' file1 file2, ..

Shell脚本之awk详解

三世轮回 提交于 2020-03-13 14:08:18
一.基本介绍 1.awk: awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的。awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域(段),域和域之间使用分割符分割。 2.功能:流控制、数学运算、进程控制、内置的变量和函数、循环和判断 3.工作原理: awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理。 (1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里 (2)使用内置的变量FS(段的分隔符,默认用的是空白字符),分割这一行,把分割出来的每个段存到相应的变量$(1-100) (3)输出的时候按照内置变量OFS(out FS),输出 (4)读入下一行继续操作 简单实例 [root@tx3 ~]# echo "this is a book" > awk.txt [root@tx3 ~]# awk '{print $2,$1,$3,$4}' awk.txt is this a book 4. Awk常用内置变量表: 1 $0 当前记录(作为单个变量) 2 $1~$n 当前记录的第n个字段,字段间由FS分隔 3 FS 输入字段分隔符 默认是空格 4 NF 当前记录中的字段个数,就是有多少列 5 NR 已经读出的记录数,就是行号,从1开始 6 RS 输入的记录他隔符默 认为换行符 7 OFS

-Shell 教程 Bash 脚本 基础语法 MD

余生长醉 提交于 2020-03-10 18:03:37
目录 目录 Shell 简介 Shell 脚本 Shell 环境 第一个shell脚本 Shell 变量 定义变量 使用变量 只读变量 删除变量 Shell 字符串 单引号 双引号 字符串基本操作 Shell 数组 定义数组 数组的基本操作 Shell 注释 Shell 传递参数 特殊字符处理参数 $* 与 $@ 的异同点 Shell 基本运算符 算术运算符 关系运算符 布尔运算符 逻辑运算符 字符串运算符 文件测试运算符 Shell echo 命令 Shell printf 命令 格式替代符 使用案例 printf 的转义序列 Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com 目录 Shell 简介 Shell 是一个用 C 语言 编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种 命令语言 ,又是一种 程序设计语言 。 Shell 是指一种 应用程序 ,这个应用程序提供了一个 界面 ,用户通过这个界面访问 操作系统内核的服务 。 Ken Thompson 的 sh 是第一种 Unix Shell, Windows Explorer 是一个典型的 图形界面 Shell 。 Shell 脚本 Shell 脚本

shell脚本之--数组操作

你说的曾经没有我的故事 提交于 2020-03-09 17:19:34
前言: 在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里面想获取某个变量的值

Shell数组追加元素的技巧

你。 提交于 2020-03-08 06:53:37
在shell中,数组是没有追加函数去实现给数组添加新元素的,我们可以利用数组的长度来添加新元素。 一、举个例子: 1.定义一个空数组变量a a=() 2.现在数组变量a的值是空的,添加一个新元素b 方法:数组变量[数组变量长度]=需要添加的元素 数组变量长度= ${#变量名[*]} a[${#a[*]}] =b #添加完毕 3.查看数组变量的值: echo ${a[*]} #输出b 二、应用在脚本的实例: 条件: 1.定义一个变量str=x_y_z 2.将变量str的值中的x,y,z添加到空数组变量arr中 代码如下: #!/bin/bash ## 定义变量 str = "x_y_z" ## 定义空数组 arr = ( ) ## 将str变量拆开分别添加到数组变量arr line = ( $( echo $ { str } | sed 's/_/ /g' ) ) for i in ${line[*]} do arr [ ${#arr[*]} ] = ${i} done echo 数组变量arr的值为: " ${arr[*]} " 脚本输出结果为: 数组变量arr的值为:x y z 来源: CSDN 作者: 绮梦寒宵 链接: https://blog.csdn.net/weixin_44901564/article/details/104552834