2014-04-24 217 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") 

還要注意,尾隨換行符的命令擴展自動剝離。