簡體   English   中英

Bash 腳本將環境變量作為命令傳遞但不執行?

[英]Bash script passing environment variable as a command but not executing it?

我有以下環境變量時間戳。 我通過以下方式調用環境變量,但是 output 只是日期。 為什么它沒有給出實際的時間戳?

不是變量 TIMESTAMP 的賦值,而是它所具有的值的描述。

environment variable 


TIMESTAMP=date +%Y-%m-%dT%H:%M:%S.%7NZ -d '-7 day'

input  
TIMESTAMP=($TIMESTAMP)
echo "debug environment variables: $TIMESTAMP:"
    
output:
debug environment variables: date

考慮:

T="a b c"
T=($T)

在上面,賦值 T=($T) 等價於T=(abc) ,它使 T 成為一個數組。 對於數組 T, $T等效於${T[0]} ,因此您的 $TIMESTAMP 僅顯示數組的第一個元素。 您可能打算寫 TIMESTAMP=$($TIMESTAMP),但是……這是一個非常糟糕的主意。 不要那樣做。 如果你從環境變量中執行任意代碼,你只是在自找麻煩。

似乎您嘗試使用 linux 命令作為值並且沒有指定variable=$(command)來創建變量,因此,您的系統正在使用空格,就好像您正在給出不同的命令一樣。

嘗試使用TIMESTAMP=$(date +%Y-%m-%dT%H:%M:%S.%7NZ --date "-7 day")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM