我想创建一个文件名以将输出重定向到。
例如:
ls -lash > $filename
所有变量都已设置。 到目前为止,我已经尝试了以下方法:
filename=`echo $site . "_location_" . $address . "_" . $timestamp . ".txt"`
filename=$site . "_location_" . $address . "_" . $timestamp . ".txt"
filename="$site_location_$address_$timestamp.txt"
没有一个工作。.我如何获得一个像这样的文件:
site1_location_northeast_071218142325.txt
谢谢
答案 0 :(得分:2)
只需使用字符串插值即可。
filename="${site}_location_${address}_${timestamp}.txt"
大括号可防止将_
视为前面的参数名称的一部分(或更精确地说,它们将包围的字符串定为参数名称)。
答案 1 :(得分:2)
您需要的是:
filename="${site}_location_${address}_${timestamp}.txt"
变量名周围的花括号可帮助Bash知道您要替换变量$site
和$address
的值。否则,因为_
是变量名中的有效字符,它认为您要使用变量$site_location_
和$address_
(不存在)。