shell数组

shell awk

旧巷老猫 提交于 2019-12-30 19:03:02
awk 逐行扫描输入 ( 可以是文件或管道等 ),按给定的模式查找出匹配的行,然后对这些行执行 awk 命令指定的操作。 awk 将读入的记录分割成数个字段,并将第一个字段放入发量 $1 中,第二个放入发量 $2 中,以此类推; $0 表示整条记录 ; 字段分隔符可以通过选项 -F 指定 ,否则使用缺省的分隔符,通常为空格或Tab。 ARGC:命令行参数个数 ( 实际就是输入文件的数目加 1 )  ARGIND:当前被处理的文件在数组 ARGV 内的索引  ARGV:命令行参数数组  FILENAME:当前输入文件的文件名  FNR:已经被 awk 读叏过的记录(行)的总数目  FS:输入记录的字段分隔符 (缺省是空格和制表符 )  NF:当前行或记录的字段数  NR:对当前输入文件而言,已被 awk 读取过的记录 ( 行 ) 的数目  OFMT:数字的输出格式 ( 缺省是 %.6g )  OFS:输出记录的字段分隔符 (缺省是空格 )  ORS:输出记录间的分隔符 (缺省是 NEWLINE )  RS:输入记录间的分隔符 (缺省是 NEWLINE )  用亍存储 awk 工作时的各种参数, 这些发量的值会随着 awk 程序的运行而劢态的发化,常见的有: awk 用法:awk ' pattern {action} ' 变量名 含义 ARGC 命令行变元个数

SHELL编程基础(二)

别来无恙 提交于 2019-12-29 22:35:00
SHELL编程基础(二) 编写一个简单的程序 #this is sample //注释 echo "hello,welcome to Fedora 6" echo "Logged in $USER." env|grep PATH echo $PATH 1 、变量 1 )用户变量 VAL=val 如 St?nt=tom echo St?nt echo $St?nt 变量引用符“$” 注意:单引号和反斜杆都可以阻止使用变量的值。双引号不会阻止变量替换,但是可以关闭大多数其他字符的特殊意义。 当使用变量作为一个参数执行一个命令时,shell将用该变量的值来代替变量名,如果变量的值包含特殊字符,如*,?,等,还会进行变量扩展。如果用””引号括起来,可以阻止bash对展开的变量进行路径名扩展。 删除变量用unset $St?nt. 2 )变量属性 a 、只读, readonly b 、 declare,typest -a 数组变量 -f 函数名变量 -i 整形变量 -r 只读 -x 输出变量 默认情况下,变量的值作为字符串存放。 3 )全局(环境)变量 全局变量全部用大写字母。 系统变量可以通过继承声明并初始化,也可以在shell启动时声明并初始化。可以通过命令行方式或者在初始化文件中为这些变量指定值。对于那些不由shell自动输出的变量,用户必须使用export

Shell 中数组的使用

一曲冷凌霜 提交于 2019-12-25 18:58:05
定义数组 my_array=(A B "C" D) 或者 array_name[0]=value0 array_name[1]=value1 array_name[2]=value2 读取数组 ${array_name[index]} 获取数组中的所有元素 my_array[0]=A my_array[1]=B my_array[2]=C my_array[3]=D # 使用@ 或 * 可以获取数组中的所有元素 echo "数组的元素为: ${my_array[*]}" echo "数组的元素为: ${my_array[@]}" 获取数组的长度 my_array[0]=A my_array[1]=B my_array[2]=C my_array[3]=D # 获取数组长度的方法与获取字符串长度的方法相同 echo "数组元素个数为: ${#my_array[*]}" echo "数组元素个数为: ${#my_array[@]}" 数组遍历 for ((i = 0; i < ${#array[@]}; i++)); do #${#array[@]}获取数组长度用于循环 echo ${array[i]} done 或者 for element in ${array[@]}; do #也可以写成for element in ${array[*]} echo $element done

Shell(2)—数组

若如初见. 提交于 2019-12-25 14:01:03
Shell(2)—数组 常用的 Bash Shell 只支持一维数组,不支持多维数组。 一、概念 Shell 并且没有限制数组的大小,理论上可以存放无限量的数据。Shell 数组元素的下标也是从 0 开始计数。 1、Shell 数组的定义 在 Shell 中,用括号 ( ) 来表示数组,数组元素之间用 空格 来分隔。由此,定义数组的一般形式为: array_name=(ele1 ele2 ele3 ... elen) 注意 ,赋值号 = 两边不能有空格,必须紧挨着数组名和数组元素。 下面是一个定义数组的实例: nums=(3 13 23 33 43 53) Shell 是 弱类型 的,它并不要求所有数组元素的类型必须相同,例如: arr=(3 30 "小小") 第三个元素就是一个“异类”,前面两个元素都是整数,而第三个元素是字符串。 Shell 数组的长度不是固定的,定义之后还可以增加元素。 例如,对于上面的 nums 数组,它的长度是 6,使用下面的代码会在最后增加一个元素,使其长度扩展到 7: nums[6]=88 此外,你也 无需逐个元素地给数组赋值 ,下面的代码就是只给特定元素赋值: ages=([3]=24 [5]=19 [10]=12) 以上代码就只给第 3、5、10 个元素赋值,所以数组长度是 3。其它位置都是取不到值的。 2、获取数组元素 获取数组元素的值

shell面试题总结

痞子三分冷 提交于 2019-12-24 04:33:03
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)

Linux Shell数组常用操作详解

亡梦爱人 提交于 2019-12-22 14:35:07
Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) 1 declare -a array 2 array=(1 2 3 4 5) 数组用小括号括起,数组元素之间用空格分开 2显示数组长度: [@tc_132_227 dm_pid_day]$ echo ${#array[@]} 5 [@tc_132_227 dm_pid_day]$ echo ${#array[*]} 5 命令: ${#数组名[@或*]} 获取数组长度,若数组无元素,输出空 3读取数组元素: [@tc_132_227 dm_pid_day]$ echo ${array[0]} 1 [@tc_132_227 dm_pid_day]$ echo ${array[1]} 2 [@tc_132_227 dm_pid_day]$ echo ${array[4]} 5 [@tc_132_227 dm_pid_day]$ echo ${array[*]} 1 2 3 4 5 [@tc_132_227 dm_pid_day]$ echo ${array[@]} 1 2 3 4 5 命令: ${数组名[下标]},数组下标从0开始,且下标为*或者@符号时,读取整个数组元素 4 对数组元素赋值: [@tc_132_227 dm_pid_day]$ echo $

shell脚本变量

和自甴很熟 提交于 2019-12-22 09:50:13
既然是变量,自然分变量名和变量值,在使用的时候一定要注意哪些地方需要用变量名,哪些地方需要用变量的值。 自定义变量 shell变量不需要声明,随用随定义,给变量赋值的时候要注意 shell是空格敏感的 使用 {} 确定变量的范围是个好习惯 $NEWENV =123 #等号前面有空格,不行 NEWENV: command not found $NEWENV= 123 #等号后面有空格,不行 123: command not found $NEWENV=123 #RIGHT $BRACE=123 $echo $BRACEEEE $echo ${BRACE}EEE 123EEE 位置变量 指shell脚本的命令参数,shell script将执行的命令放在存储在 0 ,命令之后的参数依次存储在 1 , 2 ...,可以通过取值(eg $0 )利用这些变量,就可以编写带参数的脚本,当参数值大于9时,需要使用{}括起来,否则 $10 就相当于在 $1 之后加了字符 0 。注意,定义函数的参数列表也使用 $1 , $2 etc,注意与命令行的参数相区分,函数内的 $1 etc是用来传参的,但 $0 还是保持原来的含义 $cat ./shell.sh #!/bin/bash echo "$10" echo "${10}" $./*.sh 11 22 33 44 55 66 77 88 99 00

shell编程

旧街凉风 提交于 2019-12-20 10:10:59
Shell 1. 新建一个脚本 新建一个 xxx.sh 文件 #!/bin/bash 脚本标识 1. 变量 1.1定义变量 myName=”小白” 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则: 首个字符必须为字母( a-z,A-Z)。 中间不能有空格,可以使用下划线( _)。 不能使用标点符号。 使用变量: $ 变量名 为了区分,我们可以使用 ${ 变量名 } readonly 定义一个只读的变量,不能重新赋值 1.2 删除变量 使用 unset 命令可以删除变量。语法: unset variable_name 变量被删除后不能再次使用。 unset 命令不能删除只读变量。 实例 #!/bin/bash myUrl="http://www.runoob.com" unset myUrl echo $myUrl 2. Shell 字符串 字符串是 shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。 单引号 str='this is a string' 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。 双引号 your

shell知识积累

核能气质少年 提交于 2019-12-18 15:22:38
教程: Shell脚本:Linux Shell脚本学习指南(超详细) Ubuntu下常用的快捷键 :https://blog.csdn.net/u010771356/article/details/53543041 变量名和等号之间不能有空格, 变量名 中间不能有空格,可以使用下划线 使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。 双引号的优点: 双引号里可以有变量 双引号里可以出现转义字符 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。 `命令` 等同于 $(命令) 原样输出字符串,不进行转义或取变量(用单引号) 例如:echo '$name\"' 输出结果:$name\" 显示命令执行结果 这里使用的是反引号 `, 而不是单引号 '。 例如:echo `date` 结果将显示当前日期 在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开 表达式和运算符之间要有空格 函数返回值在调用该函数后通过 $? 来获得。所有函数在使用前必须定义。 引用 http://www.runoob.com/linux/linux

shell(二)

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-17 01:33:05
Shell数组 Shell中数字用括号来表示,元素中用“空格”符号分隔开 注意:往数组里添加值,数组的长度自动增长。 例:创建数组 : arr=() 读取数组:echo arr[1] 通过下标读取 获取数组中的所有元素 :echo ${arr[ ]} 或者 echo ${arr[@]} 获取数组的长度:echo ${#arr[@]} 遍历数组: For i in ${arr[ ]} Do Echo $i Done 运算符 1.基础语法 ( ( 运 算 式 ) ) 或 ((运算式)) 或 ( ( 运 算 式 ) ) 或 [运算式] + - * / % 加 减 乘 除 取余 Expr +,-,*,/,% 加 减 乘 除 取余 注意:expr 运算符间要有间隔 例:计算3+2的值 expr 2 + 3 计算(2+3)*4的值 expr expr 2 + 3 * 4 条件判断 1.基本语法 [ condition ] 注意:condition 前后要有空格 条件非空即为true 2.常用判断条件 2.1 两个整数之间比较 =字符串比较 -lt 小于 -le 小于等于 -qe 等于 -gt 大于 -ge 大于等于 -ne 不等于 例:[ 23 -ge 22 ] 2.2 按照文件权限进行判断 -r 有读的权限 -w 有写的权限 -x 有执行的权限 2.3 按照文件类型进行判断 -f