Echoing Statements In Bash Script

Home » CentOS » Echoing Statements In Bash Script
CentOS 2 Comments

Using a bash script I want to echo several strings to a file. The echo statement, however, is in a function and thus indented but I do /not/ want the strings echoed indented in the new file. Is this doable?

Here is an example:

f () {

    echo ”

    # this is a test

    a=123

    b=456″ > file.txt

}

File.txt should the contain:

# this is a test

a=123

b=456

Thus no indentation. It seems that if I prepend each line with \b the line should be backspaced which would work nicely but the echo statement seems to replace a backspace within the quotes to spaces…

2 thoughts on - Echoing Statements In Bash Script

  • I don’t think you can do that for strings passed as arguments, but you can do that with strings that are here-documents:
    https://www.oreilly.com/library/view/bash-cookbook/0596526784/ch03s04.html

    So, maybe:

    f () {
        cat > file.txt <<-'EOF'     # this is a test     a=123     b=456     EOF } (Note that those lines need to be indented with tabs.  None of my email editors will compose in plain text at the moment, oddly, so those are being converted to spaces)

  • Thank you, will try that. I use Geany as my editor and for some reason it changes all tabs to spaces when I edit a bash script… Not sure why?