1

我有一个接受 YYYY-MM-DD 格式的输入日期的脚本。

之后,我使用 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,mm,dd)单独分配给一个变量;

X=yyyy
Y=mm
Z=dd

谢谢。

4

4 回答 4

7

尝试这样的事情:

X="2013 11 12"
read X Y Z <<<$(echo $X)
于 2013-10-11T02:54:02.197 回答
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
于 2013-10-11T02:59:04.680 回答
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
于 2013-10-11T10:19:02.333 回答
0

cut command

这里结果变量由空格分隔,因此 cut 命令将根据空格分隔符将变量拆分为单独的字段-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
于 2013-10-11T02:57:24.490 回答