Pero esto parece funcionar char por char en v4.1.2, ¿hay alguna manera de hacerlo palabra por palabra?
Alexej Magura
@AlexejMagura No entiendo lo que quieres decir. Eso actúa sobre los elementos de la matriz. Si tiene elementos de un carácter, funcionará "en caracteres". Si cada elemento es una palabra, funciona en palabras. ¿Quizás intentas esto en una cadena y no en una matriz?
terdon
Lo estoy probando en una copia de "$ @", que creo que podría convertirse en una cadena en ese momento, no estoy seguro.
Alexej Magura
En bash 4.2.46, en "${@:1:2}"realidad me da los argumentos de la primera y segunda línea de comando . Mientras tanto, "${@:1}"me da los argumentos completos de la línea de comandos y "${@:0}"me da el nombre del script seguido de los argumentos completos de la línea de comandos .
Rockallite
@Rockallite bien, sí. Los elementos segundo y tercero de la $@ matriz son los argumentos primero y segundo. "${@:1}"imprimirá la matriz completa a partir del segundo elemento (el primer argumento) y ${@:0}la matriz completa a partir del primer elemento, que es el nombre del script. ¿Que estabas esperando?
"$@"
. Suargv
asignación se rompería si algún args contuviera espacios.Respuestas:
Puede usar el mismo formato que para cualquier otra matriz. Para extraer los elementos segundo y tercero
$@
, haría:fuente
"${@:1:2}"
realidad me da los argumentos de la primera y segunda línea de comando . Mientras tanto,"${@:1}"
me da los argumentos completos de la línea de comandos y"${@:0}"
me da el nombre del script seguido de los argumentos completos de la línea de comandos .$@
matriz son los argumentos primero y segundo."${@:1}"
imprimirá la matriz completa a partir del segundo elemento (el primer argumento) y${@:0}
la matriz completa a partir del primer elemento, que es el nombre del script. ¿Que estabas esperando?