How to get exact command line string from shell?
arguments, parsing, shell
Solution
In `bash`, you can get this from the shell history:
set -o history
shopt -s expand_aliases
function myhack {
line=$(history 1)
line=${line#*[0-9] }
echo "You wrote: $line"
}
alias myhack='myhack #'
Which works as you describe:
$ myhack --args="stuff" * {1..10} $PATH
You wrote: myhack --args="stuff" * {1..10} $PATH
Also, here's a handy diagram:
Problem
I know about `$*`, `$@`, `"$@"` and even `${1+"@"}` and what they mean. I need to get access to the EXACT command-line arguments string from a shell script. Please pay attention to the quotes in the example. Anything like "$@" saves parameters but removes quotes and I don't see how to recover from this. Example: ./my-shell.sh "1 2" 3 And I need to retrieve the EXACT parameter string without any processing: "1 2" 3 Any idea how to achieve this?