What do I put in wrapper.sh
, if I want this:
wrapper.sh "hello world" arg2 '' "this ' thing"
to output:
Now please run:
other-command "hello world" arg2 '' "this ' thing"
I realize and am fine with that the original quotation is lost and the output perhaps will be quoted differently, as long as other-command
gets the correct parameters when the command is cut'n'pasted to the shell.
I'm aware of "$@"
which works well for calling other programs, but not for echoing valid bash to STDOUT
as far as I can tell.
This looks pretty nice but requires Perl and String::ShellQuote
(which I'd like to avoid):
$ perl -MString::ShellQuote -E 'say shell_quote @ARGV' other-command "hello world" arg2 '' "this ' thing"
other-command 'hello world' arg2 '' 'this ''' thing'
This doesn't work - notice how the zero-length arg is missing:
$ perl -E 'say join(" ", map { quotemeta $_ } @ARGV)' other-command "hello world" arg2 '' "this ' thing"
other-command hello world arg2 this ' thing
again, I'd like to avoid using Perl or Python...
question from:
https://stackoverflow.com/questions/65844941/how-to-echo-so-the-result-is-valid-bash-and-maintains-proper-quoting 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…