¿El número de argumentos que puede aceptar una función bash es limitado?¿Cuántos argumentos puedo pasar a una función bash?
Respuesta
El bash manual dice:
No hay límite máximo del tamaño de una matriz , ni ningún requisito de que los miembros ser indexados o asignados contigua.
Creo que esto se aplica, ya que los argumentos de la función se presentan como una matriz.
Para acceder a los argumentos de una función, puede iterar sobre ellos:
foo() {
for arg # "in [email protected]" is implied
do
echo $arg
done
}
o
bar() {
while [ $1 ]
do
echo $1
shift
done
}
o para acceder a los argumentos específicos:
baz() {
# for arguments above $9 you have to use curly braces
echo $1 $9 ${10} ${121375}
}
el número es bastante grande :
$ display_last_arg() { echo "${@: -1}"; }
$ getconf ARG_MAX
262144
$ display_last_arg {1..262145}
262145
$ echo $((2**18)) $((2**20))
262144 1048576
$ display_last_arg {1..1048576}
1048576
Como puede ver, es más grande que the kernel ARG_MAX limit, lo cual tiene sentido ya que Bash no llama al execve(2)
para invocar las funciones definidas por Bash.
me sale malloc
fallos si intento para llevar a cabo la expansión secuencia Bash ({1..NUM}
) en el rango de 2^32, por lo que hay un límite físico en algún lugar (puede variar en su máquina), pero Bash es tan lento una vez que llegue por encima de 2^20 argumentos, que alcanzará un límite de rendimiento mucho antes de alcanzar un límite estricto.
- 1. Bash - Pasar argumentos por referencia
- 2. ¿Cómo pasar todos los argumentos pasados a mi script bash a una función mía?
- 3. ¿Pasar argumentos de función a una función interna?
- 4. Pase argumentos de varias palabras a una función bash
- 5. ¿Cómo puedo pasar una lista completa de argumentos en bash manteniendo los argumentos de mulitword juntos?
- 6. Cómo pasar una matriz a una función bash
- 7. Pasar datos binarios como argumentos en bash
- 8. pasar argumentos a una función en un único vector
- 9. Pasar múltiples argumentos a una función de enhebrar
- 10. Bash: pasar una función como parámetro
- 11. F # pasar un operador con argumentos a una función
- 12. ¿Puedo pasar un patrón a una función?
- 13. ¿Cómo pasar un puntero a una función con argumentos variables?
- 14. ¿Cómo puedo pasar main * argv [] a una función?
- 15. Pasar matriz completa a una función
- 16. Cómo pasar argumentos a la función referenciada por la variable
- 17. ¿Cuántos argumentos toma la función foldr de Haskell?
- 18. ¿Cómo pasar argumentos a NSAction?
- 19. ¿Cómo puedo pasar argumentos a funciones anónimas en JavaScript?
- 20. ¿Cómo pasar una variable Bash a Python?
- 21. ¿Cómo puedo pasar una matriz a una función en Perl?
- 22. ¿Cómo puedo pasar una matriz multidimensional a una función?
- 23. ¿Cómo puedo pasar una referencia a una función, con parámetros?
- 24. En Clojure, ¿cómo puedo pasar múltiples argumentos a un defmethod?
- 25. Python - Pasar una función a otra función
- 26. Pasar argumentos a la función de JavaScript desde código subyacente
- 27. Pasar $ (esto) a una función
- 28. cómo pasar argumentos a la función dentro de una función en r
- 29. ¿Cómo puedo pasar argumentos comunes a los módulos de Perl?
- 30. ¿Es posible declarar una función sin argumentos pero luego pasar algunos argumentos a esa función sin aumentar la excepción?
Diría 0 o más. – leppie