BASH创建文件名表单变量

BASH创建文件名表单变量,bash,Bash,我想创建一个文件名,用于将输出重定向到 例如: 所有变量都已设置。。 到目前为止,我已经尝试了以下方法: filename=`echo $site . "_location_" . $address . "_" . $timestamp . ".txt"` filename=$site . "_location_" . $address . "_" . $timestamp . ".txt" filename="$site_location_$address_$timestamp.t

我想创建一个文件名,用于将输出重定向到

例如:

所有变量都已设置。。 到目前为止,我已经尝试了以下方法:

filename=`echo $site . "_location_" . $address . "_" .  $timestamp . ".txt"` 

filename=$site . "_location_" . $address . "_" .  $timestamp . ".txt" 

filename="$site_location_$address_$timestamp.txt" 
没有一个奏效。。如何获取名为以下内容的文件:

site1\u location\u northeast\u 071218142325.txt


谢谢

只需使用字符串插值

filename="${site}_location_${address}_${timestamp}.txt"

大括号防止将
\u
视为前面参数名的一部分(或者更准确地说,它们将包含的字符串分隔为参数名)。

只需使用字符串插值即可

filename="${site}_location_${address}_${timestamp}.txt"
大括号防止将
\uu
视为前面参数名的一部分(或者更准确地说,它们将封闭字符串分隔为参数名)。

您只需要:

filename="${site}_location_${address}_${timestamp}.txt" 
变量名周围的大括号有助于Bash知道您想要替换变量
$site
$address
的值。否则,因为
\uu
是变量名称中的有效字符,它认为您需要使用变量
$site\u location\u
$address\u
(这些变量不存在)。

您只需要:

filename="${site}_location_${address}_${timestamp}.txt" 

变量名周围的大括号有助于Bash知道您想要替换变量
$site
$address
的值。否则,因为
是变量名中的有效字符,它认为您需要使用变量
$site\u location\u
$address\u
(它们不存在)。

点(
)是PHP中的字符串连接运算符,而不是shell脚本中的。旁注:正如答案所指出的,这里不需要命令替换。但在执行此操作时,请使用现代形式的
$(command)
,而不是
`command`
$()
更易于阅读,并且可以方便地嵌套。点(
)是PHP中的字符串连接运算符,而不是shell脚本中的字符串连接运算符。旁注:正如答案所指出的,这里不需要命令替换。但在执行此操作时,请使用现代形式的
$(command)
,而不是
`command`
<代码>$()更易于阅读,并且可以方便地嵌套。感谢这两条注释的帮助。。这只是稍微多了一点解释。感谢这两条评论的帮助。。这只是有稍微多一点的解释。