使用KornShell将月数转换为日期
我试图将月数转换为名称,但它将输出作为当前月份,而不是变量中给定的日期 科恩希尔(ksh)代码:使用KornShell将月数转换为日期,shell,date,unix,scripting,ksh,Shell,Date,Unix,Scripting,Ksh,我试图将月数转换为名称,但它将输出作为当前月份,而不是变量中给定的日期 科恩希尔(ksh)代码: datep= 2013-10-22 echo $datep |printf "%(%B)T\n" 这样做: $ datep="2013-10-22" $ date -d"$datep" "+%B" October 根据人员日期 -d,--date=STRING 显示由字符串描述的时间,而不是“现在” 因此,我们得到: $ date -d"$datep" Tue Oct 22 00:00:00 C
datep= 2013-10-22
echo $datep |printf "%(%B)T\n"
这样做:
$ datep="2013-10-22"
$ date -d"$datep" "+%B"
October
根据人员日期
-d,--date=STRING
显示由字符串描述的时间,而不是“现在”
因此,我们得到:
$ date -d"$datep"
Tue Oct 22 00:00:00 CEST 2013
然后你说你想要%B
,也就是说,也是从人工日期开始的:
%B
区域设置的完整月份名称(例如,一月)
因此,这只是在字符串末尾使用格式的问题
其他例子:
$ date -d"$datep" "+%Y" #year
2013
$ date -d"$datep" "+%F" #date
2013-10-22
$ date -d"$datep" "+%T" #time (if not given, gets the default)
00:00:00
printf
不读取标准输入,因此它假定今天的日期为%t
格式的默认参数;您需要提供日期作为参数
printf "%(%B)T\n" "$datep"
谢谢你的回答,你能简单解释一下它是如何工作的吗。我想我应该在我的机器上安装ksh
来做一些测试。我喜欢把它看作被遗忘的shell:)。它有一些功能仍然没有被bash
(或者甚至是zsh
,令人惊讶的是)。export month\u end\u date=tail-1 month\u end\u dt.txt
export month=printf“%(%B)t\n”“$month\u end\u date”
我在month\u end\u dt.txt文件中有一个日期,并将该日期分配给month\u end\u date
参数。我想将其作为全局变量,该变量将在许多脚本中使用,因此将月份名称导出为变量month
我得到一个错误main.ksh[7]:export:%(%B)T\n:不是identifier@user2014896要计算命令,请执行var=$(命令)
。在您的例子中,end\u date=$(tail-1…)
。至于其余的问题,最好是更新你的答案或问一个新的。在注释中很难检查代码。等号后不允许有(无引号)空格:使用datep=2013-10-22
.export month\u end\u date=tail-1 month\u end\u dt.txt
export month=printf“%(%B)T\n”“$month\u end\u date”
我在month\u end\u dt.txt文件中有一个日期,并将该日期分配给month\u end\u date
参数。我想将其作为全局变量,它将在许多脚本中使用,因此将月份名称导出为变量month
我得到了一个错误main.ksh[7]:export:%(%B)T\n:不是标识您需要首先捕获printf
的输出:导出任意=$(printf“%(%B)T\n”“$datep”)