Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
303 views
in Technique[技术] by (71.8m points)

shell - Bash: Combine creating a file and storing the Path in a variable

Is there a way to create a file and store the path into a variable in Bash?

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

How can I achieve this in one command?

Edit:

From the suggestions in the comments below, it could be done like so:

ENV_FILE=$(> ./.projects.env && echo './.projects.env')
question from:https://stackoverflow.com/questions/65927247/bash-combine-creating-a-file-and-storing-the-path-in-a-variable

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

If ENV_FILE is not already set, you can use this:

echo > "${ENV_FILE:=./.projects.env}"

Note: if ENV_FILE is already set to a non-null value, this will leave it unchanged and use its existing value. From the Parameter Expansion section of the bash man page:

${parameter:=word}

Assign Default Values. If parameter is unset or null, the expansion of word is assigned to parameter. The value of parameter is then substituted. Positional parameters and special parameters may not be assigned to in this way.

BTW, using echo this way will not fully erase the file, it'll replace its contents with a newline (essentially, a single blank line). For a truly empty file, just don't use any command:

> "${ENV_FILE:=./.projects.env}"

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...