Bash:结合创建文件和将路径存储在变量中

时间:2021-01-27 20:53:13

标签: bash shell file path

有没有办法在 Bash 中创建文件并将路径存储到变量中?

ENV_FILE=./.projects.env
echo > $ENV_FILE

如何在一个命令中实现这一目标?

编辑:

根据下面评论中的建议,可以这样做:

ENV_FILE=$(> ./.projects.env && echo './.projects.env')

3 个答案:

答案 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 !$)
相关问题