`
tomhibolu
  • 浏览: 1431372 次
文章分类
社区版块
存档分类
最新评论

printf的应用脚本

 
阅读更多
我们可以使用printf写个脚本,利用命令awk,要求输入一个日期,可以判断上个月的今天是什么时候。脚本如下:
#!/bin/awk
BEGIN {
print "input a date:[yyyymmdd]" ;
getline str;
len=length(str);
if ( len !=8 )
{
printf ("error str=%s,len=%d" , str,len );
exit
}

new_day=get_last_mon_day(str);

printf( "new-day is :%s\n" , new_day );
}
function get_last_mon_day (str)
{
vYear=strtonum(substr( str , 1 , 4 ));
vMonth=strtonum(substr( str , 5 , 2 ));
vDay=strtonum(substr( str , 7 , 2 ));

if ( vMonth == 1 )
{
vMonth=12;
vYear -= 1;
}
else
{
vMonth -= 1 ;
}

isLY=is_leap_year(vYear);

max_day=get_mon_day( isLY , vMonth );
if ( vDay > max_day )
vDay=max_day ;

new_day=sprintf( "%04d%02d%02d" , vYear , vMonth , vDay );
return new_day ;
}
function is_leap_year( vYear )
{
m4=vYear%4 ;
m100=vYear%100;
m400=vYear%400;

if ( m4 == 0 && m100 != 0 )
return 1 ;
if ( m400 == 0 )
return 1;
return 0;
}

function get_mon_day( isLY , vMonth )
{
#awk has no switch statement!!
if ( isLY == 0 )
astr="31,28,31,30,31,30,31,31,30,31,30,31";
else
astr="31,29,31,30,31,30,31,31,30,31,30,31";
split(astr,am,",");
return am[vMonth];
}

执行脚本:

awk -f get_date.sh

分享到:
评论

相关推荐

    英飞凌4300单片机printf串口重定向替代方案已调试通过工程文件

    针对英飞凌4300单片机,我们不能简单地修改链接器脚本或配置文件来实现stdio的重定向,而是需要自己编写一个串口输出函数,如putchar,然后在printf内部替换原有的标准输出函数。这样,printf函数在处理格式化字符串...

    [第6讲]脚本系统.pdf

    开发者可以利用各种方法进行调试,例如,ANSI-C脚本中可以使用Printf()函数输出调试信息,而VBScript和VBA则提供了内置的调试窗口来帮助开发者诊断问题。 动态链接库(DLL)是Windows操作系统中重要的组件,允许...

    STM32 printf 函数重定向

    4. **链接`putchar`**:为了让`printf`使用我们的`putchar`,可以修改链接器脚本,或者在启动代码中将`putchar`地址设置为你的自定义版本。 5. **编译和运行**:编译代码并下载到STM32中,然后通过串口终端软件查看...

    JavaSE6入门之脚本引擎让程序如虎添翼.txt

    JSR223是Java平台脚本引擎的核心规范之一,它提供了一套统一的API,使得开发者能够在Java应用程序中无缝集成各种脚本语言。通过这个API,可以轻松获取和管理不同的脚本引擎,并且能够执行脚本代码。下面将详细介绍...

    Shell编程-字符截取命令-printf命令

    `printf`命令是一种用于格式化输出的强大工具,在Shell脚本中被广泛使用。它允许开发者按照指定的格式来输出文本,这对于数据处理和显示来说非常有用。 #### 3. printf命令的基本语法 `printf`的基本语法结构如下...

    STM32F103单片机printf函数重映射

    "USER"目录下的代码可能包含了用户的应用程序,其中可能有对printf重映射的实现。"LED波形仿真.jpg"可能是关于LED控制或串口通信的示例波形图。"keilkilll.bat"可能是Keil IDE的编译或清理脚本,而"README.TXT"则...

    CUI自动化测试脚本

    【CUI自动化测试脚本】是一种用于控制命令行界面(Command User Interface)应用程序的自动化工具。在IT领域,尤其是在系统管理、软件测试和持续集成流程中,CUI自动化测试脚本扮演着重要的角色。它能够显著提高工作...

    LinuxShell脚本攻略中文版+源码

    学会使用set命令设置脚本的执行选项,如-n检查语法,-e使脚本在遇到错误时立即退出,以及使用echo和printf进行调试输出。 总的来说,这份资源为学习和精通Linux Shell脚本提供了丰富的材料,无论是初学者还是有经验...

    Linux Shell 脚本基础

    另外,`liucheng.sh`和`liucheng (2).sh`可能包含了一些具体示例或练习,帮助学习者理解Shell脚本的实际应用。`var_scrip.sh`可能涉及到变量的使用和操作,而`test.sh`可能使用了`test`或`[`命令进行条件测试。 在...

    shell脚本,通过snmp方式获取远程服务器的CPU内存和硬盘的使用率

    在IT管理领域,远程监控服务器的状态是至关重要的任务,尤其是CPU、内存和硬盘的使用率,这些指标直接反映了...这个过程不仅涉及到了Shell脚本编程,还涉及到对SNMP协议的理解和应用,对于提升IT专业技能非常有帮助。

    完全使用Linux shell脚本语言编写的一个简单的作业管理系统

    在IT行业中,Linux Shell脚本语言是系统管理员和开发者常用的一种工具,用于自动化日常任务和...通过学习和理解这个系统,用户不仅可以掌握基本的Shell编程技能,还能了解到如何构建一个实际的应用程序来解决具体问题。

    LinuxShell脚本编程实例.doc

    本文将通过实例讲解Linux Shell脚本编程的基本概念、语法和应用。 一、基本概念 1. Shell脚本是什么? Shell脚本是指使用Shell命令语言编写的程序,用于自动执行一系列任务或操作。Shell脚本通常以文本文件形式...

    wincc脚本设置说明

    通过熟练掌握C语言和WinCC提供的API函数,我们可以设计出功能丰富的退出窗口,同时对颜色和大小进行个性化设置,以满足各种复杂的工业应用场景。不断探索和实践WinCC脚本,将有助于提升自动化系统的用户体验和控制...

    Shell脚本专家指南

    - **简单输出语句**:讲解了如何使用echo或printf命令输出信息。 - **根据调试层次控制输出**:通过设置不同的调试级别,控制输出的信息量。 - **用函数简化错误检查**:介绍了如何封装错误处理逻辑到函数中,使得...

    WinCC上可以很方便的编写VB脚本和C脚本.docx

    ### WinCC平台上VB脚本与C脚本的编写技巧及应用 #### 一、概述 在工业自动化领域,WinCC(Windows Control Center)是西门子公司开发的一款强大的组态软件,广泛应用于工厂自动化、过程控制等领域。WinCC支持多种...

    linux监控cpu脚本

    ### Linux监控CPU脚本知识点详解 #### 一、脚本概述 在Linux系统管理与运维过程中,监控CPU使用情况是一项非常重要的任务。合理的CPU监控能够帮助我们...对于更复杂的应用场景,还需根据实际需求进行相应调整和优化。

    linux磁盘自动分区脚本

    Linux 磁盘自动分区脚本 Linux 系统下自动将磁盘分区挂载是集群部署中的重要步骤。...该脚本可以在 Linux 系统中应用于各种场景,例如集群部署、云计算等。使用该脚本可以提高工作效率,减少出错的可能性。

    51单片机如何使用 printf.zip

    9. **software**目录:这个目录可能包含了与`printf`相关的源代码、库文件或编译脚本,可以进一步了解`printf`在51单片机上的具体实现。 10. **hardware**目录:这部分可能包含硬件电路图、原理图或配置文件,帮助...

    stm32 多串口同步工作 DMA printf打印字符

    3. 重定向printf:修改链接脚本和启动文件,使printf数据通过串口发送。 4. 中断处理:编写中断服务函数,处理串口的接收和发送事件。 5. 测试与调试:发送测试数据,验证串口间是否同步且互不干扰。 理解这些知识...

Global site tag (gtag.js) - Google Analytics