Linux shell表达式中的变量
我在shell中有一个Linux shell表达式中的变量,linux,bash,shell,Linux,Bash,Shell,我在shell中有一个hour变量,它包含以秒为单位的UNIX时间 如果要格式化这个小时,我使用 date -u -d @$hour +"%Y-%m-%dT%H:%M:%S.000Z" 这很有效。但是,我想将上述表达式的结果存储到另一个变量中,因此当我这样做时: formatted=$(( date -u -d @$hour +"%Y-%m-%dT%H:%M:%S.000Z" )) 它不起作用。我不知道如何在求值表达式中引用hour变量(不管它叫什么)。表达式 formatted=$(( d
hour
变量,它包含以秒为单位的UNIX时间
如果要格式化这个小时,我使用
date -u -d @$hour +"%Y-%m-%dT%H:%M:%S.000Z"
这很有效。但是,我想将上述表达式的结果存储到另一个变量中,因此当我这样做时:
formatted=$(( date -u -d @$hour +"%Y-%m-%dT%H:%M:%S.000Z" ))
它不起作用。我不知道如何在求值表达式中引用hour
变量(不管它叫什么)。表达式
formatted=$(( date -u -d @$hour +"%Y-%m-%dT%H:%M:%S.000Z" ))
使用仅适用于算术运算的$(
)。将双括号更改为单括号:
formatted=$( date -u -d @$hour +"%Y-%m-%dT%H:%M:%S.000Z" )
后者适用于字符串
供参考(这些是POSIX shell功能,不是特定于bash的):
- 讨论
$(
- 讨论
$(
- 表达式
formatted=$(( date -u -d @$hour +"%Y-%m-%dT%H:%M:%S.000Z" ))
使用仅适用于算术运算的$(
)。将双括号更改为单括号:
formatted=$( date -u -d @$hour +"%Y-%m-%dT%H:%M:%S.000Z" )
后者适用于字符串
供参考(这些是POSIX shell功能,不是特定于bash的):
- 讨论
$(
- 讨论
$(
hour=1447409296 #Whatever timestamp value you want to set
formatted=`date -u -d @$hour +"%Y-%m-%dT%H:%M:%S.000Z"`
echo $formatted
或:
您可以按以下方式执行此操作:
hour=1447409296 #Whatever timestamp value you want to set
formatted=`date -u -d @$hour +"%Y-%m-%dT%H:%M:%S.000Z"`
echo $formatted
或:
您的语法有点错误。$
后面使用双括号在Bash中引入了一个非常独特的上下文,称为
因此,只需去掉一对括号
formatted=$(date -u -d @$hour +"%Y-%m-%dT%H:%M:%S.000Z")
backticks的使用在语法上是有效的,但是
您的语法有点错误。$
后面使用双括号在Bash中引入了一个非常独特的上下文,称为
因此,只需去掉一对括号
formatted=$(date -u -d @$hour +"%Y-%m-%dT%H:%M:%S.000Z")
backticks的使用在语法上是有效的,但是
@Bernhard,因为它是在另一个答案中建议的。@Bernhard,因为它是在另一个答案中建议的。