繁体   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