Eu suponho que você tenha que reenviá-lo entre aspas, assim:
#! /bin/bash
# some script here
shift
cm2 "$@"
Eu uso o comando:
cm1 cm2 arg1 arg2 'argument 3'
Primeiro, vai para cm1
, que redirecionará arg1 arg2 'argument 3'
para outro arquivo.
/usr/bin/cm1
: #! /bin/bash
# some script here
shift
cm2 $@
/usr/bin/cm2
: echo $#
# This returns 4 in lieu of 3 because the white space in 'argument 3' causes the argument to be split into two arguments.
Então, como posso passar argumentos de um script para outro e garantir que o espaço em branco não seja lido como um separador de argumentos?