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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/7147.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

接触过的第一台电脑-90年代的x86与如今的树莓派

#勤写标兵挑战赛#最早接触电脑是在幼儿园,那时候电脑下象棋都要输入命令行的。后来小学时候有了电脑课,要穿鞋套的。满满的回忆。那个时代电子产品更新很慢的,一台电脑可以用5年,286-386-486-586。486电脑的特点是:处理…

从零开始,三分钟内用Python快速自建一个私有化 ChatGpt 聊天机器人网站

用 Python 构建由 gpt-3.5-turbo API 支持的聊天机器人网站自2023年3月1日发布“ChatGPT API”以来,已经开发出了数千个基于该API的应用程序,为企业和个人开启了新的可能性时代。借助GPT-3.5的自然语言处理能力,用户可以创建能够无缝与人交互…

spring中产生bean的几种方式

BeanImportMyImportSelector implements ImportSelectorMyImportBeanDefinitionRegistarimplements ImportBeanDefinitionRegistrarFactoryBean这里着重讲解FactoryBean如何判断当前bean是否是FactoryBeanorg.springframework.beans.factory.support.AbstractBeanFactory#isFac…

linux安装tomcat(docker)

在终端输入,在docker hub上面查找tomcat镜像 docker search tomcat 从docker hub上拉取tomcat镜像到本地 docker pull tomcat 查看是否有拉取到的tomcat docker images 使用tomcat镜像创建容器实例(也叫运行镜像) docker run -it -p 8080…

学python的第十三天---小蓝(4)

贪心1、活动安排问题2、区间覆盖问题3、最优装载问题4、多机调度问题一、答疑(贪心)二、巧克力(贪心)三、顺子日期(模拟)四、特殊时间(模拟)五、乘积尾零(模拟&#xff0…

简历问题总结

熟练掌握java相关知识,如IO流、集合框架、多线程等知识点。 ConcurrentHashMap中大量使用了CAS、多线程分步扩容,红黑树提高了并发情况下的访问速度。 put()操作先初始化Node[]数组table,默认容量是16。初始化Node[]数组前会使用Unsafe类的c…

【HTML系列】第五章 · 表单

写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正&#xff0…

html制作好看的个人简历(附源码)

文章目录1.设计来源1.1 主界面1.2 基本资料页面1.3 个人名言页面1.4 教育经历页面1.5 联系方式页面1.6 自我评价页面1.7 工作经历页面1.8 兴趣爱好页面1.9 沟通交流页面2.效果和源码2.1 动态效果2.2 源代码2.3 相关个人简历源码源码下载作者:xcLeigh 文章地址&#…

图片怎么转PDF文件格式?推荐这五个免费无损转换方法!

如何将图片转换为PDF?图片格式文件经常用于每个人的日常生活中,但有时候。我们会将多张图片转换为一份PDF文件进行单个文件传输,但很多人不知道如何将图片转换为PDF格式。 今天,我将与大家分享五种简单免费的无损转换方法&#x…

ASP医院管理系统—病历管理系统的设计与实现

病历管理系统是医院管理系统的重要组成,该系统的开发主要包括后台数据库的建立以及前台应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库,而对于后者则要求具有齐全完善的应用程序功能,友好人性化的操作界面。该系统采用现代的办公自动化…

九龙证券|算力大基建来了!交易额提高32倍,打造算力南线主干道

贵州省算力建造规划出炉,三年内算力进步超11倍,打造我国“东数西算”南线主干道。 贵州省发布算力建造规划 日前,贵州省大数据开展管理局发布《关于印发面向全国的算力保证基地建造规划的告诉》(以下简称《告诉》)。《…

全志V3S嵌入式驱动开发(看原理图)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于嵌入式软件开发的同学来说,你可能不一定要会自己画原理图、做pcb板。但是,别人已经设计好的原理图,自己还是…

〖Python网络爬虫实战⑧〗- requests的使用(二)

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费…

项目管理案例分析有哪些?

项目管控中遇到的问题有哪些?这些问题是如何解决的? 在项目管理领域,案例分析是一种常见的方法来学习和理解项目管理实践,下面就来介绍几个成功案例,希望能给大家带来一些参考。 1、第六空间:快速响应个性…

【Linux】七、进程间通信(二)

目录 三、system V(IPC) 3.1 system V共享内存 3.1.1 共享内存的概念 3.1.2 共享内存的原理 3.1.3 创建共享内存(shmget ) 3.1.4 ftok函数 3.1.5 查看共享内存资源 3.1.6 创建共享内存测试代码 3.1.7 再次理解共享内存 3.1.8 释放共享内存(shm…

Redis7搭建主从+哨兵通俗易懂

背景前提–用到的命令 ps -ef |grep redis redis服务器启动(精确启动配置文件位置) redis-server redis6379.conf redis-server redis6380.conf redis-server redis6381.conf redis客户端登录 redis-cli -a 123456 -p 6379 redis-cli -a 123456 -p 6380 redis-cli -a 12345…

蓝桥杯刷题冲刺 | 倒计时1天

作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾蓝桥杯加油,大家一定可以🐾 文章目录我是菜菜,最近容易我犯的错误总结 一些tips 各位蓝桥杯加油加油 当输入输出数据不超过 1e6 时,scanf printf 和…

【Vue】初识Vue(一)

🚗Vue学习扬帆起航~ 🚩本文已收录至专栏:Vue框架 👍由于Vue2与Vue3存在许多相似之处,先开始Vue2学习再进阶到Vue3 我们知道技术的兴起与流行一般都是为了帮助我们解决一类问题使得我们开发体验更加舒适,那么…

C++之多态

文章目录前言一、多态的概念二、多态的定义及实现1.多态的构成条件2.虚函数3.虚函数的重写(覆盖)4.虚函数重写的两个例外4.C11中的override和final关键字三、重载、重定义(隐藏)、重写(覆盖)的区分四、抽象…

【美赛】2023年ICM问题Z:奥运会的未来(思路、代码)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…