2014-04-24 116 views
0

我需要删除日期返回中的de \ n。从变量中删除 n

为什么这样吗?

 NAME=$(date +"%Y-%m-%d" | tr -d "\n") 

,这是否在外壳不

 NAME=date +"%Y-%m-%d" 
    NAME2=$(echo $NAME | tr -d "\n") 
+2

你不需要显式地删除一个换行符:'$(...)'构造为你做。参见行动:'d = $(日期); printf“%s”“$ d”| od -c与'date | od -c' –

回答

1

引用变量,并确保使用正确的命令替换语法:

NAME="$(date +'%Y-%m-%d')" 
NAME2=$(echo "$NAME" | tr -d "\n") 
+0

好,但为什么我必须这样做?那是什么意思? – user3013172

+0

教育自己 - '人tr'。 – agilob

+0

@ user3013172:不引用shell会将您的赋值解释为2个不同的参数。 – anubhava

4

NAME=date +"%Y-%m-%d"并不意味着分配的输出日期到NAME。它试图在其环境中运行名为+%Y-%m-%d的变量NAME

为了捕捉你在你的第一个例子中使用$(..)像输出:

NAME=$(date +"%Y-%m-%d") 

还要注意,尾随换行符的命令扩展自动剥离。