有没有办法在 Bash 中创建文件并将路径存储到变量中?
ENV_FILE=./.projects.env
echo > $ENV_FILE
如何在一个命令中实现这一目标?
编辑:
根据下面评论中的建议,可以这样做:
ENV_FILE=$(> ./.projects.env && echo './.projects.env')
答案 0 :(得分:1)
如果 ENV_FILE
尚未设置,您可以使用:
echo > "${ENV_FILE:=./.projects.env}"
注意:如果 ENV_FILE
is 已经设置为非空值,这将保持不变并使用其现有值。来自 bash man page 的参数扩展部分:
${parameter:=word}
分配默认值。如果 parameter
未设置或为空,则将 word
的扩展分配给 parameter
。的价值
parameter
然后被替换。位置参数和特殊
不能以这种方式分配参数。
顺便说一句,以这种方式使用 echo
不会完全擦除文件,它会用换行符(基本上是单个空行)替换其内容。对于真正的空文件,不要使用任何命令:
> "${ENV_FILE:=./.projects.env}"
答案 1 :(得分:0)
你可以试试
FILE_NAME=<a file name>
ENV_FILE=$(touch "$FILE_NAME" && realpath "$FILE_NAME")
将 <a file name>
替换为您要提供的名称。
答案 2 :(得分:0)
如果您不想重复文件名(并消除潜在的拼写错误),您可以改为这样做...
ENV_FILE=$(> ./.projects.env && echo !$)