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.两个点之 ...
随机推荐
- Swift中发布-订阅框架Combine的使用
Combine简介 Combine是一个苹果用来处理事件的新的响应式框架,支持iOS 13及以上版本. 你可以使用Combine去统一和简化在处理类似于target-action,delegate,k ...
- 教你用JavaScript实现表情评级
案例介绍 欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个表情评价程序.用户打星进行评价,表情会根据具体星星数量发生变化. 案例演示 点击星星 ...
- YOLO数据集划分(测试集和验证集)
在目标检测任务中,数据集的划分通常分为训练集和验证集,以便在训练模型时评估模型的性能.这个过程对于有效训练和评估目标检测模型非常重要.下面是划分目标检测数据集的一般步骤:`` 数据集组织: 确保你的数 ...
- 我的微软 MVP 之路
目录 微软 MVP 大礼包 我的社区经历 如何成为微软 MVP 微软 MVP 权益 总结 微软 MVP 大礼包 今天,我收到了飘洋过海的微软 MVP 大礼包,内心无比激动,礼包内包含了一座水晶奖杯,一 ...
- 《ASP.NET Core 与 RESTful API 开发实战》-- (第8章)-- 读书笔记(中)
第 8 章 认证和安全 8.2 ASP.NET Core Identity Identity 是 ASP.NET Core 中提供的对用户和角色等信息进行存储与管理的系统 Identity 由3层构成 ...
- Python 中global 关键字理解
Python中的global关键字,你了解吗? 前言 今天来了解下 Python 中的 global 关键字. Python变量的作用域 实战案例演示之前,先要了解下 Python 的作用域. Pyt ...
- NVME学习笔记六—Controller Architecture
Controller架构 NVMe over Fabrics使用与NVMe基础规格说明书中定义相同的controller架构.这包括主机和controller之间使用SQ提交队列和CQ完成队列来执 ...
- [技术选型与调研] 流程引擎/工作流引擎:Activiti、Flowable、Camunda
1 概述:流程与流程引擎 低代码平台.办公自动化(OA).BPM平台.工作流系统均需要流程引擎功能 [工作流引擎的三大功能] 1)验证当前过程状态:在给定当前状态的情况下,检查是否有效执行任务. 2) ...
- virtualbox安装oracle linux后找不到eth0
用VirtualBox装oracle linux, ifconfig发现没有eth0: 按照以下步骤操作: 1 用ifconfig eth0 up启动网卡(默认未开启),执行ifconfig下看到et ...
- git 添加子模块
参考:https://www.jianshu.com/p/10ae453701ed 问题:如果一个子模块的分支不是最新的该怎么处理? 方法:在主仓库内使用 cd 命令切换到子模块的仓库,使用 git ...