在unix中为变量赋值

时间:2013-10-11 02:45:37

标签: shell unix

我有一个接受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 个答案:

答案 0 :(得分:7)

尝试这样的事情:

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

答案 1 :(得分: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

答案 2 :(得分: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

答案 3 :(得分: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