shell学习2

shell学习总结(2)
1.Shell 中的数组
Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:
方式2: arr=(value1 value2 value3) (这种方式带值)
注意:往数组里添加值,数组的长度自动增长
(1)案例实操
#!/bin/bash
my_array=(A B “C” D)
我们也可以使用下标来定义数组:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
读取数组元素值的一般格式是:
$ echo {array_name[index]}
(2)案例实操
#!/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
(3)获取数组中的所有元素
使用@ 或 * 可以获取数组中的所有元素,例如:
#!/bin/bash
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D

echo “数组的元素为: ${my_array[*]}”
echo “数组的元素为: ${my_array[@]}”
(4)获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同,例如:
#!/bin/bash
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D

echo "数组元素个数为: ${#my_array[]}"
echo “数组元素个数为: ${#my_array[@]}”
执行脚本,输出结果如下所示:
$ chmod +x test.sh
$ ./test.sh数组元素个数为: 4数组元素个数为: 4
(5)遍历数组
案例实操
#!/bin/bash
arr=(1 2 3 4 5 6 7)
for i in ${arr[
]}
do
echo $i
done

2.运算符
(1)“ ( ( 运 算 式 ) ) ” 或 “ ((运算式))”或“ (())[运算式]” + , - , *, /, % 加,减,乘,除,取余
(2)expr + , - , *, /, % 加,减,乘,除,取余
注意:expr运算符间要有空格
3.条件判断
[ condition ](注意condition前后要有空格)
注意:条件非空即为true,[ jinghang ]返回true,[] 返回false。
常用判断条件
(1)两个整数之间比较
= 字符串比较
-lt 小于(less than) -le 小于等于(less equal)
-eq 等于(equal) -gt 大于(greater than)
-ge 大于等于(greater equal) -ne 不等于(Not equal)
(2)按照文件权限进行判断
-r 有读的权限(read) -w 有写的权限(write)
-x 有执行的权限(execute)
(3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件(file)
-e 文件存在(existence) -d 文件存在并是一个目录(directory)

4.流程控制
4.1 if 判断
1.基本语法
if [ 条件判断式 ];then
程序
fi
或者
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
else
程序
fi
4.2 case 语句
1.基本语法
case 变 量 名 i n " 值 1 " ) 如 果 变 量 的 值 等 于 值 1 , 则 执 行 程 序 1 ; ; " 值 2 " ) 如 果 变 量 的 值 等 于 值 2 , 则 执 行 程 序 2 ; ; … 省 略 其 他 分 支 … ∗ ) 如 果 变 量 的 值 都 不 是 以 上 的 值 , 则 执 行 此 程 序 ; ; e s a c 注 意 事 项 : 1 ) c a s e 行 尾 必 须 为 单 词 “ i n ” , 每 一 个 模 式 匹 配 必 须 以 右 括 号 “ ) ” 结 束 。 2 ) 双 分 号 “ ; ; ” 表 示 命 令 序 列 结 束 , 相 当 于 j a v a 中 的 b r e a k 。 3 ) 最 后 的 “ ∗ ) ” 表 示 默 认 模 式 , 相 当 于 j a v a 中 的 d e f a u l t 。 4.3 f o r 循 环 1 . 基 本 语 法 1 f o r ( ( 初 始 值 ; 循 环 控 制 条 件 ; 变 量 变 化 ) ) d o 程 序 d o n e 4.4 w h i l e 循 环 1 . 基 本 语 法 w h i l e [ 条 件 判 断 式 ] d o 程 序 D o n e 5. r e a d 读 取 控 制 台 输 入 基 本 语 法 : r e a d ( 选 项 ) ( 参 数 ) 选 项 : − p : 指 定 读 取 值 时 的 提 示 符 ; − t : 指 定 读 取 值 时 等 待 的 时 间 ( 秒 ) 。 参 数 变 量 : 指 定 读 取 值 的 变 量 名 6. 函 数 6.1 系 统 函 数 b a s e n a m e 基 本 语 法 : b a s e n a m e [ s t r i n g / p a t h n a m e ] [ s u f f i x ] ( 功 能 描 述 : b a s e n a m e 命 令 会 删 掉 所 有 的 前 缀 包 括 最 后 一 个 ( ‘ / ’ ) 字 符 , 然 后 将 字 符 串 显 示 出 来 。 选 项 : s u f f i x 为 后 缀 , 如 果 s u f f i x 被 指 定 了 , b a s e n a m e 会 将 p a t h n a m e 或 s t r i n g 中 的 s u f f i x 去 掉 。 d i r n a m e 基 本 语 法 d i r n a m e 文 件 绝 对 路 径 ( 功 能 描 述 : 从 给 定 的 包 含 绝 对 路 径 的 文 件 名 中 去 除 文 件 名 ( 非 目 录 的 部 分 ) , 然 后 返 回 剩 下 的 路 径 ( 目 录 的 部 分 ) ) 6.2 自 定 义 函 数 基 本 语 法 : [ f u n c t i o n ] f u n n a m e [ ( ) ] A c t i o n ; [ r e t u r n i n t ; ] f u n n a m e 经 验 技 巧 : ( 1 ) 必 须 在 调 用 函 数 地 方 之 前 , 先 声 明 函 数 , s h e l l 脚 本 是 逐 行 运 行 。 不 会 像 其 它 语 言 一 样 先 编 译 。 ( 2 ) 函 数 返 回 值 , 只 能 通 过 变量名 in "值1") 如果变量的值等于值1,则执行程序1 ;; "值2") 如果变量的值等于值2,则执行程序2 ;; …省略其他分支… *) 如果变量的值都不是以上的值,则执行此程序 ;; esac 注意事项: 1)case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。 2)双分号“;;”表示命令序列结束,相当于java中的break。 3)最后的“*)”表示默认模式,相当于java中的default。 4.3 for 循环 1.基本语法1 for (( 初始值;循环控制条件;变量变化 )) do 程序 done 4.4 while 循环 1.基本语法 while [ 条件判断式 ] do 程序 Done 5.read读取控制台输入 基本语法: read(选项)(参数) 选项: -p:指定读取值时的提示符; -t:指定读取值时等待的时间(秒)。 参数 变量:指定读取值的变量名 6.函数 6.1系统函数 basename基本语法: basename [string / pathname] [suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。 选项: suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。 dirname基本语法 dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分)) 6.2自定义函数 基本语法: [ function ] funname[()] { Action; [return int;] } funname 经验技巧: (1)必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其它语言一样先编译。 (2)函数返回值,只能通过 in"1"11;;"2"22;;;;esac1)casein2);;javabreak3)javadefault4.3for11for((;;))dodone4.4while1while[]doDone5.readread()()pt6.6.1basenamebasename[string/pathname][suffix]basename/suffixsuffixbasenamepathnamestringsuffixdirnamedirname6.2[function]funname[()]Action;[returnint;]funname1shell2?系统变量获得,可以显示加:return返回,如果不加,将以最后一条命令运行结果,作为返回值。return后跟数值n(0-255)
7.Shell工具(文本处理)
7.1 cut
cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。
基本用法: cut [选项参数] filename
说明:默认分隔符是制表符
2.选项参数说明
表1-55
选项参数 功能
-f 列号,提取第几列
-d 分隔符,按照指定分隔符分割列
-c 指定具体的字符
7.2 sed
sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
基本用法: sed [选项参数] ‘command’ filename
选项参数说明
表1-56
选项参数 功能
-e 直接在指令列模式上进行sed的动作编辑(一次执行多个操作时)。
-i 直接编辑文件
命令功能描述
表1-57
命令 功能描述
a 新增,a的后面可以接字串,在下一行出现
d 删除
s 查找并替换

7.3 awk
一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。
基本用法: awk [选项参数] ‘pattern1{action1} pattern2{action2}…’ filename
pattern:表示AWK在数据中查找的内容,就是匹配模式
action:在找到匹配内容时所执行的一系列命令
选项参数说明

选项参数 功能
-F 指定输入文件折分隔符
-v 赋值一个用户定义变量
7.4 sort
sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。
基本语法:sort(选项)(参数)

选项 说明
-n 依照数值的大小排序
-r 以相反的顺序来排序
-t 设置排序时所用的分隔字符
-k 指定需要排序的列
参数:指定待排序的文件列表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值