Shell笔记--使用系统函数、自定义函数和Shell工具

​​​​​​​

目录

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

猜你喜欢

转载自blog.csdn.net/weixin_43863869/article/details/129926329
今日推荐