1

I am writing a shell program to output another shell program to be evalled later. Is there some common shell program to print shell escaped for a string?

steveyang
  • 9,178
  • 8
  • 54
  • 80
  • `%q` (bash-only) was pointed out below. But mind you, `%q` was broken for more than a decade and only recently fixed. See also http://stackoverflow.com/questions/15783701/ – Jo So Oct 22 '15 at 01:31

2 Answers2

2

I'm not sure I understand you question. But the %q option of printf might be what you are looking for.

%q Output the corresponding argument in a format that can be reused as shell input

printf %q 'C:\ProgramFiles is a Windows path;'

outputs C:\\ProgramFiles\ is\ a\ Windows\ path\;

(In this example, simple quotes are needed – comment of Gordon Davisson – but this doesn't matter if you print from a variable or the output of a command.)

styko
  • 641
  • 3
  • 14
0

You could use single quoted string as this is evaluated without any substitution.
For example the following commands are equivalent

cat abc\ hi.txt
cat 'abc hi.txt'
shanmuga
  • 4,329
  • 2
  • 21
  • 35