Tengo los siguientes scripts de bash dos
ceniza:
#!/bin/bash
./b.sh 'My Argument'
b.sh:
#!/bin/bash
someApp $*
El binario someApp recibe $*como 2 argumentos ('Mi' y 'Argumento') en lugar de 1.
He probado varias cosas:
- Ejecutar someApp solo
b.shfunciona como se esperaba - Iterar + hacer eco de los argumentos en
b.shfunciona como se esperaba - Usar en
$@lugar de$*no hace la diferencia

someApp "$*"osomeApp "$@"Respuestas:
$*, sin comillas, se expande a dos palabras. Necesita citarlo para quesomeAppreciba un solo argumento.Es posible que desee usar
$@en su lugar, por lo quesomeApprecibiría dos argumentos si llamarab.shcomoCon
someApp "$*",someApprecibiría un único argumentoMy first My second. ConsomeApp "$@",someApprecibiría dos argumentosMy firstyMy second.fuente
$@y$*funcionan de manera idéntica.IFS=$'\n'. No tengo idea de por qué.