BASH创建文件名的表单变量
BASH创建文件名的表单变量
我想为重定向输出创建一个文件名。
例如:
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
谢谢
原因:在Bash中,为了告诉Bash要替换变量$site和$address的值,需要使用大括号将变量名括起来。否则,由于下划线是变量名中的有效字符,Bash会认为你要使用变量$site_location_和$address_(实际上这两个变量并不存在)。
解决方法:使用大括号将变量名括起来,即可解决该问题。
以下是一个示例代码:
filename="${site}_location_${address}_${timestamp}.txt"
在这个代码中,我们使用了大括号来包裹变量$site和$address,以确保Bash正确识别这两个变量并替换它们的值。这样就能够正确生成文件名了。
感谢以上两位评论者提供的帮助,这个解释稍微详细了一些。