shell编程05【自定义函数和高级命令】,华为普工面试经历

本文介绍了Shell编程中的自定义函数,通过实例演示了如何使用和调试函数。同时,讲解了几个常用的高级命令,如cut、sort、uniq,包括它们的参数和使用案例,帮助提升Shell脚本编写效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

return $(($1+S2))

}

fSum 5 7

total=$?

echo t o t a l , total, total,?

输出

[root@hadoop-node01 ~]# . fun1.sh

2,3

5,7

5,0

脚本调试


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 开源分享

sh -vx fun1.sh

[root@hadoop-node01 ~]# sh -vx fun1.sh

#!/bin/bash

fSum 2 3

  • fSum 2 3

fun1.sh: line 2: fSum: command not found

function fSum()

{

echo $1,$2

return $(($1+S2))

}

fSum 5 7

  • fSum 5 7

  • echo 5,7

5,7

  • return 5

total=$?

  • total=5

echo t o t a l , total, total,?

  • echo 5,0

5,0

高级命令

==================================================================

| 序号 | 命令 | 说明 |

| — | :-- | :-- |

| 1 | cut | 从一个文本文件或者文本流中提取文本列 |

| 2 | sort | 对 File 参数指定的文件中的行排序 |

| 3 | uniq | 可以去除排序过的文件中的重复行 |

| 4 | wc | 计算文件的Byte数、字数或是列数 |

| 5 | sed | 流编辑器,不改变原有内容,加载到临时缓冲区中编辑,然后将结果输出 |

| 6 | awk | 编程语言 |

cut


cut语法

-d :后面接分隔字符。与 -f 一起使用;

-f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;

-c :以字符 (characters) 的单位取出固定字符区间;

在这里插入图片描述

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rvm/bin:/usr/local/jdk8/bin:/root/apps/redis-5.0.3/src:/root/apps/zookeeper/bin:/root/bin

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11

案例

  1. 将 PATH 变量取出,我要找出第五个路径。

[root@hadoop-node01 ~]# echo $PATH | cut -d ‘:’ -f 5

/usr/sbin

  1. 将 PATH 变量取出,我要找出第三和第五个路径。

[root@hadoop-node01 ~]# echo $PATH | cut -d ‘:’ -f 3,5

/sbin:/usr/sbin

  1. 将 PATH 变量取出,我要找出第三到最后一个路径。

[root@hadoop-node01 ~]# echo $PATH | cut -d ‘:’ -f 3-

/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rvm/bin:/usr/local/jdk8/bin:/root/apps/redis-5.0.3

/src:/root/apps/zookeeper/bin:/root/bin

  1. 将 PATH 变量取出,我要找出第一到第三个路径。

[root@hadoop-node01 ~]# echo $PATH | cut -d ‘:’ -f 1-3

/usr/local/sbin:/usr/local/bin:/sbin

  1. 将 PATH 变量取出,我要找出第一到第三,还有第五个路径。

[root@hadoop-node01 ~]# echo $PATH | cut -d ‘:’ -f 1-3,5

/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin

sort


命令对 File 参数指定的文件中的行排序

| 参数 | 说明 |

| — | :-- |

| -b: | 忽略每行前面开始出的空格字符; |

| -c: | 检查文件是否已经按照顺序排序; |

| -d: | 排序时,处理英文字母、数字及空格字符外,忽略其他的字符; |

| -f: | 排序时,将小写字母视为大写字母; |

| -i: | 排序时,除了040至176之间的ASCII字符外,忽略其他的字符; |

| -m: | 将几个排序号的文件进行合并; |

| -M: | 将前面3个字母依照月份的缩写进行排序; |

| -n: | 依照数值的大小排序; |

| -o<输出文件>: | 将排序后的结果存入制定的文件; |

| -r: | 以相反的顺序来排序; |

| -t<分隔字符>: | 指定排序时所用的栏位分隔字符; |

| +<起始栏位>-

<结束栏位>: | 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。 |

举例:对/etc/passwd 的账号进行排序

在这里插入图片描述

默认按照首字母排序

cat /etc/passwd | sort

在这里插入图片描述

按照":"分隔符分割排序,

cat /etc/passwd | sort -t ‘:’ -k 3

按照":"分割,-k 3 表示按照第三个分割的字符排序,默认是数据字典排序

在这里插入图片描述

cat /etc/passwd | sort -t ‘:’ -k 3n

在这里插入图片描述

排序默认是升序,降序排序加’r’

cat /etc/passwd | sort -t ‘:’ -k 3nr

在这里插入图片描述

uniq


可以去除排序过的文件中的重复行

| 参数 | 说明 |

| :-- | :-- |

| -c 或 --count | 在每列旁边显示该行重复出现的次数; |

| -d 或 --repeated | 仅显示重复出现的行列; |

| -f<栏位> 或 --skip -fields=<栏位> | 忽略比较指定的栏位; |

| -s<字符位置> 或 --skip-chars=<字符位置> | 忽略比较指定的字符; |

| -u 或 --unique | 仅显示出一次的行列; |

| -w<字符位置> 或 --check-chars=<字符位置> | 指定要比较的字符。 |

准备数据

[root@hadoop-node01 ~]# vim a.txt

[root@hadoop-node01 ~]# cat a.txt

hello

java

name

java

php

spring

shell

shell

spring

springmvc

mybatis

hello

ajax

排序并去重

cat a.txt | sort | uniq

[root@hadoop-node01 ~]# cat a.txt | sort | uniq

ajax

hello

java

mybatis

name

php

shell

spring

springmvc

统计各行在文件中出现的次数:

sort a.txt | uniq -c

[root@hadoop-node01 ~]# sort a.txt | uniq -c

1 ajax

2 hello

2 java

1 mybatis

1 name

1 php

2 shell

2 spring

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值