linux shell date时间函数、串行执行、位置变量、shift

shell 旨在记录一些关于shell的知识 阅读详情


参考连接:

  • https://blog.youkuaiyun.com/wujizhishui/article/details/119955956

一,date获取时间精确到毫秒

举例:

[gudong@k8s-node01 ~]$ date +'%Y-%m-%d/%H:%M:%S.%N' 
2022-05-02/16:53:51.717582175
[gudong@k8s-node01 ~]$ date +'%Y-%m-%d/%H:%M:%S.%N' | cut -b 1-23
2022-05-02/16:53:54.573

二,获取时间戳

参数

-d, --date=STRING         display time described by STRING, not 'now'
%s   seconds since 1970-01-01 00:00:00 UTC

举例:

[gudong@k8s-node01 ~]$ date +%s ; date -d "10 minute ago"  +%s
1651481660
1651481060

三,时间比较

例子1:

[gudong@k8s-node01 ~]$ [ 2 -ge 1 ] && echo "成立" || echo "不成立"
成立
[gudong@k8s-node01 ~]$ 
[gudong@k8s-node01 ~]$ [ 1 -ge 2 ] && echo "成立" || echo "不成立"
不成立
[gudong@k8s-node01 ~]$ 
[gudong@k8s-node01 ~]$ [ `date +%s` -ge `date -d "10 minute ago"  +%s` ] && echo "成立" || echo "不成立"
成立

[gudong@k8s-node01 ~]$ [ `date +%s` -le `date -d "10 minute ago"  +%s` ] && echo "成立" || echo "不成立"
不成立

例子2:

[gudong@k8s-node01 ~]$ old_time=`date +"%Y-%m-%d-%H:%M:%S"`
[gudong@k8s-node01 ~]$ new_time=`date +"%Y-%m-%d-%H:%M:%S"`
[gudong@k8s-node01 ~]$ echo $old_time
2022-05-11-08:25:47
[gudong@k8s-node01 ~]$ echo $new_time
2022-05-11-08:25:54
[gudong@k8s-node01 ~]$ [[ $new_time > $old_time ]] && echo "真" || echo "假"
真
[gudong@k8s-node01 ~]$ [[ $new_time < $old_time ]] && echo "真" || echo "假"
假
[gudong@k8s-node01 ~]$ [[ $new_time = $old_time ]] && echo "真" || echo "假"
假
[gudong@k8s-node01 ~]$ [[ $new_time -ge $old_time ]] && echo "真" || echo "假"
-bash: [[: 2022-05-11-08: value too great for base (error token is "08")
假

例子3:

[gudong@k8s-node01 ~]$ old_time=`date +"%Y-%m-%d-%H:%M:%S"`
[gudong@k8s-node01 ~]$ new_time=`date +"%Y-%m-%d-%H:%M:%S"`
[gudong@k8s-node01 ~]$ new_new_time=`date +"%Y-%m-%d-%H:%M:%S"`
[gudong@k8s-node01 ~]$ 
[gudong@k8s-node01 ~]$ 
[gudong@k8s-node01 ~]$ echo $old_time
2022-05-11-08:33:04
[gudong@k8s-node01 ~]$ echo $new_time
2022-05-11-08:33:10
[gudong@k8s-node01 ~]$ echo $new_new_time
2022-05-11-08:33:18
[gudong@k8s-node01 ~]$ 
[gudong@k8s-node01 ~]$ 
[gudong@k8s-node01 ~]$ [[ $new_time > $old_time && $new_time < $new_new_time ]] && echo "真" || echo "假"
真
[gudong@k8s-node01 ~]$ [[ $new_time > $old_time && $new_time > $new_new_time ]] && echo "真" || echo "假"
假
[gudong@k8s-node01 ~]$

四,linux shell串行执行

[gudong@k8s-node01 yyy]$ cat f1.sh 
echo `date +%H:%M:%S`
echo "第一次"
sh $1
#sleep 10
echo `date +%H:%M:%S`
echo "第二次"
[gudong@k8s-node01 yyy]$ 
[gudong@k8s-node01 yyy]$ cat f2.sh 
echo "f2"
sleep 10
echo "f2-2"
[gudong@k8s-node01 yyy]$ 
[gudong@k8s-node01 yyy]$ ./f1.sh f2.sh 
12:31:55
第一次
f2
f2-2
12:32:05
第二次
[gudong@k8s-node01 yyy]$

五,位置变量

前提须知:下面这种情况,位置参数是否生效,取决于第一个脚本有没有包括它。

[gudong@k8s-node01 var]$ cat 1.sh 
echo '第1次'
sh $1 $2
echo '第2次'
sh $1 $2 $3 
[gudong@k8s-node01 var]$ cat 2.sh 
echo '$1:' $1 
echo '$2:' $2
echo '$3:' $3 
[gudong@k8s-node01 var]$ ./1.sh 2.sh 10 20
第1次
$1: 10
$2:
$3:
第2次
$1: 10
$2: 20
$3:
[gudong@k8s-node01 var]$

1,例1

[gudong@k8s-node01 hh]$ cat 1.sh 
fun1()
{
echo this is 1.sh
}
fun1

sh $1 $2 
[gudong@k8s-node01 hh]$ cat 2.sh 
echo 哈哈哈哈
ss=$1
echo '$1' $1
echo '$2' $2
echo 'ss' $ss
[gudong@k8s-node01 hh]$ ./1.sh 2.sh 酷酷酷
this is 1.sh
哈哈哈哈
$1 酷酷酷
$2
ss 酷酷酷
[gudong@k8s-node01 hh]$ ./1.sh 2.sh 酷酷酷 给力给力
this is 1.sh
哈哈哈哈
$1 酷酷酷
$2
ss 酷酷酷


[gudong@k8s-node01 hh]$ ./2.sh 酷酷酷 给力给力
哈哈哈哈
$1 酷酷酷
$2 给力给力
ss 酷酷酷

2,例2

[gudong@k8s-node01 hh]$ cat 1.sh 
fun1()
{
echo this is 1.sh
}
fun1

script_name=$1
shift 1
sh $script_name "$@"
[gudong@k8s-node01 hh]$ cat 2.sh 
echo 哈哈哈哈
ss=$1
echo '$1' $1
echo '$2' $2
echo 'ss' $ss
[gudong@k8s-node01 hh]$ ./1.sh 2.sh 酷酷酷 给力给力
this is 1.sh
哈哈哈哈
$1 酷酷酷
$2 给力给力
ss 酷酷酷

3,例3

[gudong@k8s-node01 yyy]$ cat f3.sh 
echo $1 $2 $3
fun1(){
echo '$1:' $1
echo '$3:' $3
}
fun1 $3
echo "-----------"
sh f4.sh $3

[gudong@k8s-node01 yyy]$ cat f4.sh 
echo '$1:' $1
echo '$3:' $3
[gudong@k8s-node01 yyy]$ 
[gudong@k8s-node01 yyy]$ sh f3.sh 1 2 3
1 2 3
$1: 3
$3:
-----------
$1: 3
$3:

六,shift

[gudong@k8s-node01 hh]$ cat 3.sh 
echo $1 $2 $3
shift 2
echo $1

[gudong@k8s-node01 hh]$ sh 3.sh 1 2 3
1 2 3
3
Shell编程规范与变量使用最佳实践 Shell脚本作为Linux系统管理和自动化运维的核心工具,其编程规范与变量使用直接影响脚本的可靠性和可维护性。从技术原理看,Shell变量本质是内存中的数据存储单元,通过作用域控制、类型定义和特殊变量实现程序状态管理。规范的变量命名(如小写下划线风格)、严格的作用域控制(local/global)以及错误处理机制(set -euo pipefail)能显著提升脚本质量。在企业级应用场景中,Shell脚本常用于自动化部署、监控告警和数据处理,此时数组变量、关联数组和变量替换等高级特性尤为重要。通过Shell 阅读详情

相关推荐

跨平台Shell生存系统:从adb shell到国产Linux的命令兼容实战

Shell是操作系统最基础的交互接口,其核心原理在于通过解释器解析命令、调用系统调用并与文件系统、进程模型深度耦合。不同平台(macOS、Linux发行版、Android、Windows WSL)因Shell解释器(bash/zsh/dash/mksh)、内核模块、init系统及权限模型差异,导致同一命令行为迥异——这并非bug,而是底层设计哲学的自然体现。掌握跨平台Shell能力,意味着理解环境指纹识别、命令语法降级、路径语义映射与错误归因链,从而支撑AI开发(如mac安装claude code)、移动调

weixin_33994429的博客 567

SHELL输出精确到毫秒的时间

SHELL输出精确到毫秒的时间 代码 #!/bin/bash # 输出精确到毫秒的时间 export LANG=zh_CN.utf8 # 工作目录 work="${1%*/}" # 输入参数 json=$2 # 临时变量 description="demo" # 执行 # ********************************************** python3 ./source/main.py --work="$work" --json="$json" status=$? i

好记性不如烂笔头 3044

Shell编程规范与变量核心解析:提升脚本质量的关键技巧

Shell脚本作为Linux系统管理和自动化运维的核心工具,其编程规范与变量管理直接影响脚本的可维护性和安全性。从技术原理看,Shell变量本质是内存中的数据存储单元,通过环境变量、局部变量等不同作用域实现数据隔离。规范的变量命名(如全大写常量、小写下划线普通变量)和严格的作用域控制(local声明)能显著提升代码可读性。在企业级应用场景中,结合set -euo pipefail错误处理机制和trap清理命令,可以构建健壮的自动化脚本。特别是在DevOps实践中,规范的Shell脚本能无缝集成到CI/CD流

weixin_30945039的博客 330

linux shell命令对时间的处理(精确到秒、毫秒、纳秒)——筑梦之路

【代码】linux shell命令对时间的处理(精确到秒、毫秒、纳秒)——筑梦之路。

筑梦之路 4270

shell 获取秒、毫秒和纳秒

有时候我们在写shell的时候需要获取时间戳(秒、毫秒和纳秒),shell本省不像C++代码那样容易,使用起来也没那么顺畅,但是可以满足我们的需求。1、总体不算太难,所有结果得到的是字符串,可以通过$(())进行数学运算2、不加-d选项,获取到的时间都是当前的本机时间,如果你的时间错乱,可能影响最终结果;在实际操作前,请确认你的系统时间是对的。3、可以使用RTC或时间同步让你的系统时间保持正确。

jiexijihe945的博客 8414

(19)Shell脚本【echo命令:输出当前日期】

A、Shell 是一个 C 语言编写的脚本语言,它是用户与 Linux 的桥梁,用户输入命令交给 Shell 处理,shell是一个命令解释器,是一个工具箱, Shell 将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户;B、Shell Script,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。

m0_46498597的博客 3456

Linux系统shell命令date获取时间精确到毫秒

截取时间从左往右数第23位,以下是截取到第三位毫秒 date +%Y-%m-%d' '%H:%M:%S.%N | cut -b 1-23

小白客 3万+

基于FPGA的DDR学习——1.基础知识

⚪DDR2(Double Data Rate2)SDRAM是由JEDEC(电子设备工程联合委员会)开发的第三代SDRAM内存技术标准,1.8V工作电压,240线接口,提供了相较于DDR SDRAM更高的运行效能与更低的电压,同样采用在时钟的上升/下降沿同时进行数据传输的基本方式,但拥有两倍于上一代DDR内存预读取能力(即4bit数据预取能力),其常见的频率规范有DDR2 400\533\667\800\1066\1333等,总线频率553MHZ的DDR2内存只需133MHZ的工作频率。

qq_44932488的博客 2070

Linux之文本处理小工具+shell从入门到精通

Shell脚本编程核心摘要 本文档全面介绍了Shell脚本编程的核心知识,主要包含以下内容: 文本处理工具:详细讲解grep、cut、sort、uniq等文本处理命令的用法和示例,包括正则表达式应用。 Shell基础特性:包括命令补全、常用快捷键、通配符使用和引号的三种类型(双引号、单引号、反撇号)。 变量管理:涵盖变量分类(本地/环境/全局/系统变量)、定义规则、数组使用、交互式变量定义和变量内容操作。 流程控制:包括if条件判断、for/while/until循环语句的语法结构和实际应用案例,如批量创建

小峰编程 930

SSD训练自定义数据集实战:VOC格式标注与模型调参技巧

本文详细介绍了如何使用SSD模型训练自定义VOC格式数据集,包括数据标注工具选择、VOC数据集目录结构规范、数据集划分方法以及模型调参技巧。通过实战案例演示了SSD源码的关键修改点和训练参数优化策略,帮助开发者高效实现目标检测任务。

php55的博客 563

IATF16949核心职位全解析

TM / Top MgmtMR / QMRProcess OwnerQMQAQCSQECQEPQEPETEMEIEPM / PJMFMEA ModeratorMSA CoordinatorSPC CoordinatorCM / CCB内审员CP / CPK

weixin_49938552的博客 972

shell编程-8

规定一个时间去做某事 任务:做的事情 计划:到时到点

investor_的博客 1125

Android/AutoMotive 多用户文件操作与权限管理

本文深入探讨了Android/Automotive多用户系统的文件操作与权限管理机制。文章阐述了多用户隔离与共享的核心原理,重点介绍了如何使用adb指令精准管理不同用户的应用与数据,并提供了在Android Automotive车载场景下实现安全跨用户数据共享与权限控制的最佳实践。

weixin_29214691的博客 162

【linux】shell命令

【代码】【linux】shell脚本。

qq_26127905的博客 421

输入过欠压保护电路分析

输入过欠压保护电路仿真分析

HW-BASE的博客 6909

反爬虫:对抗最新反爬技术 Cloudflare详解

本文针对Cloudflare最新反爬机制提供完整解决方案,覆盖TLS指纹、行为轨迹、设备指纹等检测场景。文章首先分析Cloudflare的三重检测体系(TLS指纹、行为指纹、设备指纹)及其拦截表现,随后提出四种绕过方案:1)使用curl_cffi模拟浏览器TLS指纹;2)通过undetected-chromedriver移除自动化特征;3)Playwright结合stealth插件模拟人类行为;4)动态请求调度策略。重点推荐轻量级Python方案curl_cffi和浏览器自动化方案Playwright-st

数据知道的博客 4625

Linux Shell脚本编程核心框架与实战技巧

Shell脚本作为Linux系统管理与自动化运维的核心工具,其基础架构与数据处理能力直接影响运维效率。从技术原理看,Shell通过解释执行命令实现自动化,其核心价值在于将复杂操作封装为可重复使用的脚本。在实际应用中,从基础变量处理到高级函数封装,每个环节都存在典型陷阱,比如未正确处理含空格文件名会导致批量操作失败。本文深入解析Shell脚本四大核心模块:基础结构、数据处理、流程控制和函数封装,特别针对数组操作、并行处理等高频应用场景,结合变量作用域控制、trap异常处理等工程实践,帮助开发者编写健壮高效的自

chulilang8944的博客 498

dify制作的工作流如何通过API调用

本文介绍了如何通过Python程序调用Dify工作流API实现数据处理功能。文章详细展示了workflow和chatflow的调用方法,包括参数设置和结果输出,并提供了一个完整的API调用工具代码示例。该工具可实现文本处理、成果查重、关键词生成等功能,支持通过Python脚本或Postman进行调用。核心代码包含API请求函数和批量处理函数,通过HTTP请求与Dify服务端交互,实现自动化数据处理流程。

hhue2007的专栏 935

Shell脚本函数:从基础语法到高级应用实战

Shell函数是脚本编程中的核心代码复用单元,通过封装命令序列实现模块化开发。其工作原理基于POSIX标准,通过创建独立作用域来隔离变量环境。在自动化运维和持续集成场景中,函数技术能显著提升脚本的可维护性和执行效率,特别适合处理重复性系统管理任务。本文以磁盘检查、日志记录等实际案例,详解如何运用局部变量、参数传递和返回值机制构建健壮的Shell函数库,并分享递归实现、性能优化等进阶技巧。掌握这些方法能帮助开发者编写出更专业的企业级Shell脚本,应对复杂的Linux系统管理需求。

weixin_34326179的博客 375

支持向量机算法之鸢尾花特征分类【机器学习】

支持向量机(SVM)是一种二元分类模型。它的基本模型是在特征空间中定义最大区间的线性分类器,这使它不同于感知器;支持向量机还包括核技术,这使得它本质上是一个非线性分类器。支持向量机的学习策略是区间最大化,它可以形式化为求解凸二次规划的问题,等价于正则化铰链损失函数的最小化。支持向量机的学习算法是求解凸二次规划的优化算法。Scikit learn(sklearn)是机器学习中常见的第三方模块。它封装了常见的机器学习方法,包括回归、降维、分类、聚类等。实例的特征向量(以2D为例)映射到空间中的一些点,如下图中的

一键难忘的博客 4971

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Linux Shell脚本编程从入门到精通

Shell脚本是Linux系统管理和自动化运维的核心工具,通过解释执行命令实现批量操作。其核心原理是通过管道和重定向组合各种Unix工具,形成自动化处理流程。在数据处理方面,grep、sed、awk组成的文本处理三剑客能高效完成日志分析、配置修改等任务。Shell脚本特别适合系统监控、批量文件操作、自动化部署等场景,如使用crontab定时执行监控脚本,或通过CI/CD集成部署脚本。本文详解从基础语法到grep/sed/awk高级用法,并包含日志分析等实战案例,帮助开发者掌握这个Linux系统的瑞士军刀。

weixin_30493401的博客 419

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Shell脚本函数实战:从模块化编程到日志库构建

在Linux运维与自动化脚本开发中,模块化编程是提升代码可维护性和复用性的核心思想。其基本原理是将复杂逻辑封装为独立单元,通过函数实现,从而降低代码耦合度。这一技术价值在于能显著提升脚本的工程化水平,使脚本易于调试、协作和长期维护。在自动化部署、日志分析、系统监控等应用场景中,结构清晰的函数化脚本是高效运维的基石。本文以Shell函数为切入点,深入探讨了函数定义、变量作用域、参数传递等关键概念,并重点解析了如何利用函数构建一个带颜色输出和文件写入的日志函数库,其中涉及了局部变量声明和命令替换等热词技术点,为

cuanji3287的博客 461

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Shell脚本特殊变量详解:从$?、$1到$@的实战应用

在Linux系统管理和自动化运维中,Shell脚本是实现任务自动化的核心技术。理解Shell解释器的内置变量机制,是编写健壮、可靠脚本的基础。这些特殊变量由Shell直接赋予,用于访问脚本运行时的关键状态信息,其原理在于Shell在解释执行时会对特定符号进行预定义替换。掌握位置参数、参数统计、进程状态等变量,能极大提升脚本的灵活性和容错性,对于构建CI/CD流水线、自动化部署、日志处理等工程实践场景至关重要。本文聚焦于$?、$1、$#、$@等核心变量,通过对比$@与$*在处理带空格参数时的差异,并结合自动化

weixin_30764883的博客 495

Shell 脚本笔记(一)欢迎讨论指点

变量名由字母、数字、下划线组成,不能以数字开头左右两侧绝对不能有空格Bash 中变量默认都是字符串类型,无法直接进行数学运算变量值包含空格时,必须使用双引号包裹不能使用 Shell 关键字(if、for、while 等)作为变量名变量名区分大小写# 直接赋值即可,无需额外命令name="张三"echo $name# 方式1:定义同时导出# 方式2:先定义普通变量,再导出city="深圳"declare -x 变量=值与上述写法效果完全一致。$0:脚本名$1‑$n:接收传入参数。

conglucky的博客 369

Linux基本命令及操作总结

一、基本命令 1、开机和关机 sync #将数据由内存同步到硬盘中 shutdown #关机指令, shutdown -h 10 # 10分钟后关机 shutdown -h 20:25 #在当天20:25关机 shutdown -h now #立马关机 shutdown -r now #系统立马重启 reboot #重启 halt #关闭系统 2、系统目录结构 1、一切皆文件 2、根目录 / /bin : bi

weixin_43763430的博客 3936

Shell脚本入门:从零到自动化,告别重复命令操作

在计算机操作系统中,Shell作为用户与内核之间的命令解释器,是执行任务的核心接口。其工作原理是将用户输入的命令翻译成系统调用,从而驱动硬件和软件资源。掌握Shell的价值在于能够将零散、重复的手工操作序列化,实现自动化,极大提升工作效率和准确性。这一技术在运维部署、数据处理、文件管理等日常开发与系统管理场景中应用广泛。例如,通过编写脚本可以轻松解决`npm`、`node`等命令的环境路径配置问题,或实现`shell重命名文件`、日志清理等批量操作。本文将以一个实用的日志清理脚本为例,引导你从创建第一个可执

clijovtbq401783153的博客 486
上一篇: nginx之root alias proxy_pass测试
下一篇: linux cut命令
gushaolin
博客等级 码龄7年 16粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值