Por algún motivo, necesito que mi script pueda aceptar argumentos con caracteres de espacio. Si, por ejemplo, tengo un script de la siguiente manera,argumento de paso que contiene espacio en el script de shell
for SOME_VAR in [email protected]
do
echo "$SOME_VAR"
cd "$SOME_VAR"
done;
si pasar argumentos al script (suponiendo que se llama foo.sh)
sh foo.sh "Hello world"
Estoy contando con la secuencia de comandos para imprimir Hola mundo y cambie el directorio a "Hola mundo". Pero me sale este mensaje de error en lugar
hello
cd: 5: can't cd to hello
world
cd: 5: can't cd to world
así que ¿cómo es exactamente lo que me pase discusión con carbón espacio para un comando en un script de shell ?!
XD gracias por la respuesta, iba a responder yo mismo, alguna explicación más detallada http://tldp.org/LDP/abs/html/internalvariables.html#ARGLIST – Jeffrey04
Pero si $ @ es una lista para poner " alrededor de eso, básicamente, se fusionaría en una cadena larga. No se iteraría sobre ella ¿no? Y en ese caso no hay un uso real para tener un bucle for, un 'echo" normal $ @ "; cd" $ @ "' haría. ¿Hay una solución donde puedo tener 'for i in' -construye delimit en línea pero no espacio? –
@AndreasWederbrand: No. "$ @" es un token especial que significa "envolver cada individuo argumento entre comillas ". Entonces' a "bc" 'se convierte (o más bien se mantiene)' "a" "bc" 'en lugar de' "abc" 'o' "a" "b" "c" '. –