目录
1--basename和dirname系统函数
2--自定义函数
3--Shell常用工具
3-1--cut
3-2--sort
1--basename和dirname系统函数
① basename 基本用法:basename [string / pathname] [suffix]
basename:删除最后一个 '/' 字符(包括 '/' 字符)前面的内容(即 string/ ),显示剩下的字符串(即 pathname);
suffix: 后缀,当 suffix 被指定时,basename 会将 pathname 或 string 中的 suffix 去掉;
代码实例:
basename $PWD/test.sh
basename $PWD/test.sh .sh
② dirname 基本用法:dirname 文件绝对路径
dirname:从给定的绝对路径中,去除文件名(非目录的部分),然后返回剩下的路径;
代码实例:
dirname $PWD/test.sh
2--自定义函数
基本语法:
function funname(){
xxxxxxxx
}
# 调用
funname
因为 shell 脚本是逐行运行的,函数在调用之前必须先声明;
函数的返回值通过 $? 系统变量获得,通过 return 返回;不使用 return 时默认返回最后一条命令的运行结果;
代码实例:求解输入两个参数的累加和
#!/bin/bash
function sum(){
s=0
s=$[$1+$2]
echo $s
}
read -p "input your paratemer1: " p1
read -p "input your paratemer2: " p2
sum $p1 $p2
3--Shell常用工具
3-1--cut
cut 用于从文件的每一行剪切字节、字符和字段,并将其输出;
基本用法:cut [选项参数] filename
-f 列号,提取第几列
-d 分隔符,按照指定分隔符进行分割列
实例代码:分割 MacOS 系统中 ifconfig 关于 en0 inet的地址,即下图红框内容:
ifconfig en0
ifconfig en0 | grep 'inet 172' | cut -d " " -f 2
# 首先通过管道过滤得到 ifconfig en0 关于 inet 的内容
# 接着使用 cut 按照分隔符 “ ”(即空格)进行剪切,最后通过 -f 提取第 2 列数据
3-2--sort
sort 用于将文件进行排序,并将排序结果进行标准输出;
sort(选项)(参数)
-n 依照数值的大小排序
-r 以相反的顺序来排序
-t 设置排序时所用的分割字符
-k 指定需要排序的列
测试代码:
vim test.txt
# 输入以下内容
AA:100:500
BB:50:200
CC:90:300
DD:200:350
EE:10:400
按 : 进行分割,对第二列进行排序:
sort -t : -nrk 2 test.txt