bashescaping

Command to escape a string in Bash


I need a Bash command that will convert a string to something that is escaped. Here's an example:

echo "hello\world" | escape | someprog

Where the escape command makes "hello\world" into "hello\\\world". Then, someprog can use "hello\\world" as it expects. Of course, this is a simplified example of what I will really be doing.


Solution

  • In Bash:

    printf "%q" "hello\world" | someprog
    

    for example:

    printf "%q" "hello\world"
    hello\\world
    

    This could be used through variables too:

    printf -v var "%q\n" "hello\world"
    echo "$var"
    hello\\world