shell数组

Shell相关知识

佐手、 提交于 2019-12-17 00:19:54
Shell数组 创建空数组 arr1=() 向数组中添加值的方法 1.创建非空数组:arr2=(赋值) 2.arr[0]=赋值 获取数组中的元素 echo "数组的元素为:${arr[0]}" 使用@ 或 * 可以获取数组中的所有元素 echo "数组的元素为:${arr[*]}" echo "数组的元素为:${arr[@]}" 获取数组的长度 echo "数组的长度为:${#arr[*]}" echo "数组的长度为:${#arr[@]}" 遍历数组 arr=(赋值) for i in ${arr[*]} do echo $i done Shell运算符 =、-、*、/、% 使用echo、expr使用运算符 echo $[a+b]或echo $((a+b))(不需要有空格) expr $a + $b(需要有空格) 以上两种方法只支持整数运算 条件判断 整数之间比较地运算符 -le 小于等于 -ne 不等 -lt 小于 -gt 大于 -eq 等于 -ge 大于等于 文件权限的判断 -r 文件名 可读 -w 文件名 可写 -x 文件名 可执行 按照文件类型判断 -f 文件存在并且是一个常规的文件 -e 文件存在 -d 文件存在并是一个目录 流程控制 if判断 基本语法: if [ 条件判断式 ];then 程序 fi 或者 if [ 条件判断式 ] then 程序 elif [

Shell脚本编程

自古美人都是妖i 提交于 2019-12-15 22:48:37
目录 1 基本介绍 1.1 什么是Shell 1.2 什么是Shell Script 1.3 Shell能做什么 2 运行环境 2.1 Shell 环境 2.2 bash环境文件 3 运行基础 3.1 Shell脚本格式 3.2 脚本的执行 4 编程语法 4.1 变量 4.2 字符串 4.3 数组 4.4 注释 4.5 基本运算符 1 基本介绍 1.1 什么是Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁 是一种命令语言,又是一种程序设计语言 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务 1.2 什么是Shell Script 是一种为Shell编写的脚本程序 1.3 Shell能做什么 将多个命令写在一起,让用户很轻松的就能执行一个文件的Shell脚本,就能够一次执行多个命令。 2 运行环境 2.1 Shell 环境 Bourne Again Shell (/bin/bash) Bourne Shell (/usr/bin/sh或/bin/sh) 只要有一个能编写代码的文本编辑器vi和一个能解释执行的脚本解释器就可以了 2.2 bash环境文件 .bash_profile 设置环境变量 账户一建立,该文件就存在 .bashrc 存放针对bash的命令 在 .bash_profile 之后执行 .bash_logout

Shell编程—创建函数

安稳与你 提交于 2019-12-15 20:28:49
1 基本的脚本函数 函数是一个脚本代码块,你可以为其命名并在代码中任何位置重用。要在脚本中使用该代码块时,只要使用所起的函数名就行了。 1.1 创建函数 有两种格式可以用来在bash shell脚本中创建函数。第一种格式采用关键字function,后跟分配给该代码块的函数名。 function name { commands } 二种格式更接近于其他编程语言中定义函数的方式。 name() { commands } 1.2 使用函数 $ cat test1 #!/bin/bash # using a function in a script function func1 { echo "This is an example of a function" } count=1 while [ $count -le 5 ] do func1 count=$[ $count + 1 ] done echo "This is the end of the loop" func1 echo "Now this is the end of the script" $ ./test1 This is an example of a function This is an example of a function This is an example of a function This is

70个shell脚本技巧

别来无恙 提交于 2019-12-11 12:04:23
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) 举例如何写一个函数 ? function example { echo "Hello world!" } 12)

Shell--数组

谁说胖子不能爱 提交于 2019-12-11 04:44:45
Shell数组 数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。 与大部分编程语言类似,数组元素的下标由0开始。 Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下: array_name = ( value1 .. . valuen ) 实例 #!/bin/bash my_array = ( A B "C" D ) 我们也可以使用下标来定义数组: array_name [ 0 ] = value0 array_name [ 1 ] = value1 array_name [ 2 ] = value2 读取数组 读取数组元素值的一般格式是: ${array_name[index]} 实例 #!/bin/bash my_array = ( A B "C" D ) echo "第一个元素为: ${my_array[0]} " echo "第二个元素为: ${my_array[1]} " echo "第三个元素为: ${my_array[2]} " echo "第四个元素为: ${my_array[3]} " 执行脚本,输出结果如下所示: $ chmod +x test.sh $ ./test.sh 第一个元素为: A 第二个元素为: B 第三个元素为: C 第四个元素为: D

bash shell的内建命令

假如想象 提交于 2019-12-09 19:24:59
内建命令是在当前bash下执行的,会对当前环境和subshell产生影响,而不是内建命令,bash会fork一个subshell来执行,为什么要内建命令,因为bash的subshell不会对父shell产生影响,这样造成的结果是如cd命令,如果执行cd命令是在bash的subshell中执行,那么,并不会改变父shell的目录,这就不能完成切换目录的目的了。 你也可以使用enable命令打开或者关闭内建命令,内建命令总共有50多个,比较常用的有source . read mapfile和readarray(一个命令的两种写法,功能是将一个文本直接变成一个数组,每行作为数组的一个元素) echo printf jobs sleep fg bg disown(使一个jobs作业控制进程脱离jobs的控制,成为一个“野”进程) trap suspend exit exec logout wait 命令行参数的处理getopts,实现如-a、-b、-c n的功能,e:表示这个参数后面是有变量值的,后面的变量用$OPTARG获取。 #!/bin/bash while getopts "abc:de:f" arg do case $arg in a) echo "aaaaaaaaaaaaaaaaaaaaaa" ;; b) echo "bbbbbbbbbbbb" ;; c) echo "c

shell 随笔

╄→尐↘猪︶ㄣ 提交于 2019-12-09 12:26:05
Shell 变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。 有效的 Shell 变量名示例如下: RUNOOB LD_LIBRARY_PATH _var var2 无效的变量命名: ?var=123 user*name=runoob 除了显式地直接赋值,还可以用语句给变量赋值,如: for file in `ls /etc` 或 for file in $(ls /etc) 以上语句将 /etc 下目录的文件名循环出来。 使用变量 使用一个定义过的变量,只要在变量名前面加美元符号即可,如: your_name="qinjx" echo $your_name echo ${your_name} 变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况: for skill in Ada Coffe Action Java; do echo "I am good at ${skill

Linux shell脚本

◇◆丶佛笑我妖孽 提交于 2019-12-08 20:39:29
1 Shell脚本是什么、它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。 2 什么是默认登录shell,如何改变指定用户的登录shell 答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。使用chsh命令可以改变默认的shell。示例如下所示: 3 可以在shell脚本中使用哪些类型的变量? 答:在shell脚本,我们可以使用两种类型的变量: 系统定义变量 用户定义变量 系统变量是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过“ set ”命令查看。 用户变量由系统用户来生成和定义,变量的值可以通过命令“ echo $<变量名> ”查看。 4 如何将标准输出和错误输出同时重定向到同一位置? 答:这里有两个方法来实现: 方法一: 2>&1 (# ls /usr/share/doc > out.txt 2>&1 ) 方法二: &> (# ls /usr/share/doc &> out.txt ) 5 shell脚本中“if”语法如何嵌套? 答:基础语法如下: 6 shell脚本中“$?”标记的用途是什么? 答:在写一个shell脚本时,如果你想要检查前一命令是否执行成功

Linux下的Shell工作原理

可紊 提交于 2019-12-07 14:13:50
Linux系统提供给用户的最重要的系统程序是Shell命令语言解释程序。它不 属于内核部分,而是在核心之外,以用户态方式运行。其基本功能是解释并 执行用户打入的各种命令,实现用户与Linux核心的接口。系统初启后,核 心为每个终端用户建立一个进程去执行Shell解释程序。它的执行过程基本 上按如下步骤: (1)读取用户由键盘输入的命令行。 (2)分析命令,以命令 名作为文件名,并将其它参数改造为系统调用execve( )内部处理所要求的 形式。 (3)终端进程调用fork( )建立一个子进程。 (4)终端进程本身用系 统调用wait4( )来等待子进程完成(如果是后台命令,则不等待)。当子进 程运行时调用execve( ),子进程根据文件名(即命令名)到目录中查找有 关文件(这是命令解释程序构成的文件),将它调入内存,执行这个程序( 解释这条命令)。 (5)如果命令末尾有&号(后台命令符号),则终端进程 不用系统调用wait4( )等待,立即发提示符,让用户输入下一个命令,转⑴ 。如果命令末尾没有&号,则终端进程要一直等待,当子进程(即运行命令 的进程)完成处理后终止,向父进程(终端进程)报告,此时终端进程醒来 ,在做必要的判别等工作后,终端进程发提示符,让用户输入新的命令,重 复上述处理过 程。-------------------------------------------

linux bash shell 特殊字符大全

北城以北 提交于 2019-12-07 03:42:48
Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好,往往能给我们起到事半功倍的效果,为此,特地将Shell里面的一些符号说明罗列成对照表的形式,以便快速的查找。看看你知道下表中的哪些Shell符号呢? Shell符号及各种解释对照表: Shell符号 使用方法及说明 # 注释符号(Hashmark[Comments]) 1.在shell文件的行首,作为shebang标记,#!/bin/bash; 2. 其他地方作为注释使用,在一行中,#后面的内容并不会被执行,除非; 3. 但是用单/双引号包围时,#作为#号字符本身,不具有注释作用。 ; 作为多语句的分隔符(Command separator [semicolon])。 多个语句要放在同一行的时候,可以使用分号分隔。注意,有时候分号需要转义。 ;; 连续分号(Terminator [double semicolon])。 在使用case选项的时候,作为每个选项的终结符。在Bash version 4+ 的时候,还可以使用[;;&], [;&] . 点号(dot command [period])。 1. 相当于bash内建命令source,如: #!/bin/bash . data