cat <<//EOF >dumpargs.c
#include <stdio.h>
int main(int argc, char *argv[]) {
int i;
for(i = 0; i < argc; ++i)
printf("[%d] '%s'\n", i, argv[i]);
return 0;
}
//EOF
gcc dumpargs.c -o dumpargs
$ ./dumpargs 1 2 3
[0] './dumpargs'
[1] '1'
[2] '2'
[3] '3'
cat <<EOF >testargs1.sh
#!/bin/bash
./dumpargs $@
EOF
chmod +x ./testargs1.sh
Dumping parameters
$ ./testargs1.sh "1 2 3" "4 5 6"
[0] './dumpargs'
[1] '1'
[2] '2'
[3] '3'
[4] '4'
[5] '5'
[6] '6'
Even though ./testargs1.sh got two parameters, dumpargs received 6 params space-separated.
cat <<EOF >testargs2.sh
#!/bin/bash
./dumpargs "$@"
EOF
chmod +x ./testargs2.sh
$ ./testargs2.sh "1 2 3" "4 5 6"
[0] './dumpargs'
[1] '1 2 3'
[2] '4 5 6'
Now the parameters do not get space separated when forwarded.