如何在unix shell脚本中分配变量

时间:2017-04-20 15:48:20

标签: bash shell awk

我有一个名为TIMESTAMP = 04/12/2017 03:45:00的变量,并编写了一个脚本来将其转换为:/2017_04_12/03_45/。脚本是:

echo $TIMESTAMP |
     tr ' :' // |
     awk -F/ '{ printf("/%s_%s_%s/%s_%s/\n",$3,$1,$2,$4,$5); }'

这很棒!

现在,如何将此事物的输出分配给新变量MYVAR?我试过这个:

MYVAR=$(echo $TIMESTAMP |
        tr ' :' // |
        awk -F/ '{ printf("/%s_%s_%s/%s_%s/\n",$3,$1,$2,$4,$5); }')

没有运气。

然后我也尝试了这个:

MYVAR=`echo $TIMESTAMP |
       tr ' :' // |
       awk -F/ '{ printf("/%s_%s_%s/%s_%s/\n",$3,$1,$2,$4,$5); }'`
再次,没有运气。

在任何一种情况下,我都会收到错误消息:

04/12/2017: no found

1 个答案:

答案 0 :(得分:0)

也许你的时间戳不好?

试试这个

$ myvar=$(date "+%Y/%m/%d %H:%M:%S" | awk -F'[ /:]' -v OFS=_ '
                                      {print "/" $1,$2,$3 "/" $4,$5 "/"}')

$ echo "$myvar"
/2017_04_20/12_31/