2013-10-11 107 views
0

我有一個接受YYYY-MM-DD格式輸入日期的腳本。將值賦給unix中的變量

之後,我用sed刪除了連字符( - ),它給了我一個輸出YYYY MM DD。

我的問題是,我如何將這三個數字分配給三個不同的變量。

實施例:

2013年11月23日將成爲2013 11 23

echo "Please input date[yyyy-mm-dd]: " 
read date 
echo $date | sed 's/\-/ /g' #this will give me the output of yyyy mm dd 

我希望分配三個數字(YYYY,毫米,DD)發送至個別像這樣的變量;

X=yyyy 
Y=mm 
Z=dd 

謝謝。

+0

嘗試切割命令 – SriniV

回答

7

嘗試是這樣的:

X="2013 11 12" 
read X Y Z <<<$(echo $X) 
+0

+1簡單。優雅。 UNIX。 – 2013-10-11 12:11:21

+0

另一個問題,我怎樣才能確保月份和日期的變量將有一個固定的兩位數字。例如:Y = 2 Z = 9,我希望那些變成Y = 02和Z = 09,並且我想確保當輸入是兩位數時不會返回3位數。例如Y = 11 Z = 23,它不能成爲Y = 011和Z = 023 –

+0

請忽略這一點,我明白了。再次感謝! –

0

cut command

這裏產生的變量由空間分隔使剪切命令將拆分變量進入基於空間的分隔符-d' '-f1,2,3,...單獨的領域將獲得分割後場

result=`echo $date | sed 's/\-/ /g'` 

X=`echo $result | cut -d' ' -f1` 
Y=`echo $result | cut -d' ' -f2` 
Z=`echo $result | cut -d' ' -f3` 

echo $X $Y $Z 
1

你可以做到以下幾點:

> now=2013-11-23 
> year=`echo $now | awk -F- '{ print $1 }'` 
> month=`echo $now | awk -F- '{ print $2}'` 
> day=`echo $now | awk -F- '{ print $3 }'` 
> echo $year.$month.$day 
2013.11.23 
0

如果您的需要只是三個變量,其中包括年份,月份和日期。您可以簡單地通過

#Get the year 
X=`date '+%Y'` 
echo $X 

#Get the month 
Y=`date '+%m'` 
echo $Y 

#Get the date 
Z=`date '+%d'` 
echo $Z