I have stored a multiline environnement variable thanks to github docs.
- name: copy
run: |
echo 'CONTENT_ENV<<EOF' >> $GITHUB_ENV
cat README.md >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
I would like to get it, but this code give one line :
- name: paste
run: echo $CONTENT_ENV > index.md
The worflow shows the variable properly stored in env (with spaces) :

Your variable is properly stored, but you need to add quotes if you want to preserve the newlines :
- name: paste
run: echo "$CONTENT_ENV" > index.md
- name: test
run: cat index.md
Short explanation is that default field separator is whitespace (space, tab and newline), so if you don't use quotes, echo will consider all newlines separated strings as different arguments. See this post for more in-depth explanation
You can use an option like this
- name: Output file
id: read-file
run: |
FILE_CONTENT="$(<${FILE_NAME})"
printf "npmrc_content<<EOF\n%s\nEOF\n" "${FILE_CONTENT}" >> "$GITHUB_OUTPUT"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With