2016-09-23 14 views
0

我有一個格式爲「Thu Sep 22 3:50 2016」的日期,我想將它轉換爲格式:「2016-09-22 「轉換日期字符串到Solaris shell腳本上的編號給出沒有這樣的文件或目錄

我試過下面的shell腳本,它對'date'工作正常,但給用戶指定的字符串提供了錯誤:(我正在使用Solaris平臺)。任何投入都將有所幫助。

輸入:

#!/usr/bin/sh 
mydate="Thu Sep 22 3:50 2016" 
echo `date +"%Y-%m-%d"` 
echo `$mydate +"%Y-%m-%d"` 

輸出

./testShell.sh 
**2016-09-22** 

./testShell.sh[6]:Thu: not found **[No such file or directory]**

任何指針嗎?

+0

您正在使用哪種Solaris版本? 'cat/etc/release' – jlliagre

+0

PS。現在被刪除的答案依賴於GNU date',這在Solaris上不一定可用。 – jlliagre

+0

謝謝你指出。可否請您提出建議,那麼將「Thu Sep 22 3:50 2016」轉換爲「2016-09-22」的最佳方法是什麼?可能是我也應該編輯我的問題 – user2306856

回答

0

你可以嘗試這樣的事情;

#!/bin/bash 
mydate="Thu Sep 22 3:50 2016" 
date +"%Y-%m-%d" 
date -d "$mydate" "+%Y-%m-%d" 
+0

這需要GNU'日期'。 – jlliagre

2

在Solaris 11,許多GNU公用事業的/usr/gnu/bin目錄下提供,所以你只需要稍微修改腳本要麼使用的完整路徑的GNU變種:

#!/bin/sh 
mydate="Thu Sep 22 3:50 2016" 
date +"%Y-%m-%d" 
/usr/gnu/bin/date -d "$mydate" +"%Y-%m-%d" 

,或者使用已有的符號鏈接由g前綴(爲GNU):

gdate -d "$mydate" +"%Y-%m-%d" 

,或者設置PATH首先查看/usr/gnu/bin並保持腳本不變。

PATH=/usr/gnu/bin:$PATH 
+0

它工作!非常感謝 – user2306856

+0

在我的Solaris 11.2文件服務器安裝中,'gdate'被軟鏈接到'/ usr/bin'中,所以不需要'PATH'環境變量更新。我不記得除了正常安裝以外的任何事情。 –

+0

@AndrewHenle你是對的,'g *'符號鏈接默認安裝,答案更新以添加此解決方案。 – jlliagre

相關問題