shell脚本中常用的自定义函数
在Shell脚本中,你可以定义各种函数来执行不同的任务。以下是20个常用的自定义函数示例,涵盖了从文件操作、文本处理到系统监控等多个方面:
- 检查文件是否存在
file_exists() {
[ -f "$1" ] && echo "File exists." || echo "File does not exist."
}
- 检查目录是否存在
dir_exists() {
[ -d "$1" ] && echo "Directory exists." || echo "Directory does not exist."
}
- 获取文件大小
get_file_size() {
du -sh "$1" 2>/dev/null | cut -f1
}
- 列出目录中的所有文件
list_files() {
find "$1" -maxdepth 1 -type f -print
}
- 检查命令是否可用
command_exists() {
command -v "$1" >/dev/null 2>&1
}
- 获取当前日期
current_date() {
date +"%Y-%m-%d"
}
- 获取当前时间
current_time() {
date +"%H:%M:%S"
}
- 计算两个日期的差值
date_diff() {
date -d "$2" +%s -d "$1" +%s | awk '{print $1 - $2}' | xargs -I {} date -d @-{} +%jd
}
- 打印彩色文本
print_color() {
local text=$1
local color=$2
case "$color" in
red)
echo -e "\033[31m$text\033[0m"
;;
green)
echo -e "\033[32m$text\033[0m"
;;
yellow)
echo -e "\033[33m$text\033[0m"
;;
blue)
echo -e "\033[34m$text\033[0m"
;;
*)
echo "$text"
;;
esac
}
- 延时执行
delay() {
sleep "$1"
}
- 检查是否是root用户
is_root() {
[ "$(id -u)" -eq 0 ] && echo "Root user" || echo "Not root user"
}
- 获取IP地址
get_ip() {
hostname -I | awk '{print $1}'
}
- 生成随机字符串
generate_random_string() {
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1
}
- 检查端口是否占用
is_port_open() {
nc -zv "$1" 2>/dev/null | grep -q open
}
- 重启服务
restart_service() {
systemctl restart "$1"
}
- 检查服务状态
service_status() {
systemctl is-active --quiet "$1"
}
- 获取最后修改的文件
last_modified_file() {
ls -t | head -n 1
}
- 计算目录中文件的数量
count_files() {
find "$1" -type f | wc -l
}
- 清空文件内容
empty_file() {
> "$1"
}
- 发送邮件
send_email() {
echo "$2" | mail -s "$1" "$3"
}
请注意,这些函数可能需要根据你的具体环境和需求进行调整。例如,发送邮件的函数依赖于系统上的mail命令,而该命令的配置和使用可能因系统而异。同样,检查服务状态和使用systemctl的函数适用于使用systemd的系统。在不支持这些工具的系统上,你需要使用不同的命令或方法来实现相同的功能。
shell脚本中常用的自定义函数的更多相关文章
- Shell脚本中使用function(函数)示例
这篇文章主要介绍了Shell脚本中使用function(函数)示例,本文着重讲解的是如何在shell脚本中使用自定义函数,并给出了两个例子,需要的朋友可以参考下 函数可以在shell script ...
- shell 调用其他shell脚本中的变量、函数
在Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数呢? 方法一: . ./subscript.sh (两个点之间,有空格) 方法二: source ./subscript. ...
- shell 脚本中常用的内置变量
在 Bash 解释器中,内置了许多变量,这些变量的功能是解释器自带的,我们在编写shell脚本时如果能灵活的使用它们,对脚本的编写效率以及差错大有帮助, 下面一一介绍这些变量 $FUNCNAME.$L ...
- Linux下shell脚本中信号捕获和函数练习脚本之ping一个网段
该脚本主要的目的是练习在Linux bash脚本中捕获信号,顺便练习一下函数的使用,还有就是终止一个正在运行的程序后,该程序打开的文件的后续处理问题等等!脚本功能: ping一个网段内的IP,检测哪 ...
- shell脚本中常用命令
1 Shell中的特殊符号 1.1 $ 美元符号.用来表示变量的值.如变量NAME的值为Mike,则使用$NAME就可以得到“Mike”这个值. 1.2 ...
- shell脚本编程基础之自定义函数库
脚本编程知识点 ${#VAR_NAME}:引用变量中字符的长度 A="25 90 100 120": echo ${A#* }:针对A变量,#表示从左往右,*空格表示以空格为分隔符 ...
- centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课
centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 ...
- 在shell脚本中使用函数
转载请标明:http://www.cnblogs.com/winifred-tang94/ 对于在脚本中重复使用的功能模块,可以封装成为函数. shell脚本中函数的定义可以使用如下两种方式: a. ...
- Shell脚本中变量和函数变量的作用域
(1)Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止.(2)Shell函数定义的变量默认是global的,其作用域从“函数被调用时执行变 ...
- Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数
在Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数呢? 方法一: . ./subscript.sh 方法二: source ./subscript.sh 注意: 1.两个点之 ...
随机推荐
- 1cm+1kg纤薄身材 带来14小时超长续航!华硕灵耀13 2023评测
一.前言:华硕推出1cm+1kg超轻薄笔记本 还有OLED好屏加持 随着处理器能效的不断进步,轻薄本已经不存在性能羸弱的问题了,也给了各大厂商极大的发挥空间,不过市面上的轻薄本厚度普遍在15~20mm ...
- java在服务器上创建文件(以shell脚本为例)并执行
java在服务器上创建文件(以shell脚本为例)并执行 1️⃣ 首先写个方法,来在服务器上创建脚本 package com.preciouslove.xinxin_emo.controller; i ...
- 让 JuiceFS 帮你做好「异地备份」
家住北京西二旗的小张是一家互联网金融公司的运维工程师,金融行业的数据可是很值钱的,任何的损坏和丢失都不能容忍. 为此,小张选了北京品质最高的机房,买了品质最好的硬件,做了全面的数据备份容灾策略: 每 ...
- Git操作--Pycharm
声明: 1)仅作为个人学习,如有冒犯,告知速删! 2)不想误导,如有错误,不吝指教! 一--在idea中配置git: 1. 更改git的安装路径:file-->settings,找到versio ...
- 掌握C语言文件操作:从入门到精通的完整指南!
欢迎大家来到贝蒂大讲堂 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty's blog 1. 什么是文件 文件其实是指一组相关数据的有序集合.这个数据集有一个名称,叫做文件名.文 ...
- 源码剖析Spring依赖注入:今天你还不会,你就输了
在之前的讲解中,我乐意将源码拿出来并粘贴在文章中,让大家看一下.然而,我最近意识到这样做不仅会占用很多篇幅,而且实际作用很小,因为大部分人不会花太多时间去阅读源码. 因此,从今天开始,我将采取以下几个 ...
- NC20545 [HEOI2012]采花
题目链接 题目 题目描述 萧芸斓是Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花. 花园足够大,容纳了 \(n\) 朵花,花有 \(c\) 种颜色(用整 ...
- linux如何发送电子邮件
使用linux时,有时我们想发邮件给朋友或同事,可不可以通过命令行直接发呢? 想通过linux监控网站或者系统状况并自动报警,如何使用脚本发出邮件给外部邮箱呢? 不 ...
- Spring Boot学生信息管理系统项目实战-1.项目介绍
1.获取源码 需要源码的朋友,请捐赠任意金额后留下邮箱发送:) 2.项目背景 刚开始自己帮教师朋友写的,核心是学生信息的导入导出功能.后来又扩展了几个模块. 水平一般能力有限,觉着有用的朋友可以拿去自 ...
- nginx添加站点
1.修改配置文件 vim /usr/local/nginx/conf/nginx.conf 添加一个server节点: server { listen 81; ...