Số lượng đối số mà hàm bash có thể chấp nhận bị giới hạn?Tôi có thể vượt qua bao nhiêu đối số cho hàm bash?
Trả lời
Các bash manual nói:
Không có giới hạn tối đa về kích thước của một mảng, cũng không phải bất kỳ yêu cầu mà thành viên được lập chỉ mục hoặc giao liên tục kế nhau.
Tôi tin rằng điều này được áp dụng, vì đối số chức năng được trình bày dưới dạng mảng.
Để truy cập vào đối số trong một chức năng, bạn có thể lặp qua chúng:
foo() {
for arg # "in [email protected]" is implied
do
echo $arg
done
}
hoặc
bar() {
while [ $1 ]
do
echo $1
shift
done
}
hoặc truy cập vào lập luận cụ thể:
baz() {
# for arguments above $9 you have to use curly braces
echo $1 $9 ${10} ${121375}
}
Con số này là khá lớn :
$ 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
Như bạn có thể thấy, nó lớn hơn the kernel ARG_MAX limit, có ý nghĩa vì Bash không gọi execve(2)
để gọi các hàm do Bash xác định.
Tôi nhận được malloc
lỗi nếu tôi cố gắng thực hiện mở rộng chuỗi Bash ({1..NUM}
) trong phạm vi 2^32, do đó có giới hạn cứng ở đâu đó (có thể khác trên máy của bạn), nhưng Bash quá chậm khi bạn ở trên 2^20 đối số, rằng bạn sẽ đạt đến giới hạn hiệu suất tốt trước khi bạn đạt đến giới hạn cứng.
- 1. Vượt qua đối số nhiều từ vào hàm bash
- 2. Có bao nhiêu đối số hàm tạo quá nhiều?
- 3. Vượt qua Arraylist làm đối số cho hàm
- 4. Tôi có thể gửi bao nhiêu dữ liệu qua socket.emit?
- 5. Bạn có thể vượt qua một đối số để sigaction?
- 6. Tôi có thể tạo bao nhiêu phiên bản System.Timers.Timer? Tôi có thể mở rộng bao xa?
- 7. Cách chuyển mảng làm đối số cho hàm trong Bash
- 8. Làm thế nào tôi có thể vượt qua một tập hợp các số đối số không xác định cho một hàm trong MATLAB?
- 9. Có bao nhiêu đối số() có trong C/C++
- 10. Có thể vượt qua một lớp như một tham số cho một hàm trong C++?
- 11. Có thể gửi bao nhiêu dữ liệu qua $ _GET
- 12. Danh sách vượt qua C++ làm tham số cho hàm
- 13. Vượt qua biến JSP làm tham số cho hàm javascript
- 14. Làm thế nào tôi có thể vượt qua một danh sách đối số đầy đủ trong bash trong khi vẫn giữ các đối số mulitword cùng nhau?
- 15. Vượt qua hai đối số bằng navigator.notification.confirm?
- 16. Làm cách nào tôi có thể tìm số đối số của hàm Python?
- 17. Làm thế nào tôi có thể vượt qua đối số tùy chọn trong Django xem
- 18. Vượt qua các loại làm đối số cho một hàm trong Haskell?
- 19. Ở đây tài liệu là đối số cho hàm bash
- 20. Tôi có thể sử dụng bao nhiêu Java với GWT?
- 21. Tôi có thể dựa vào GUID trong .Net bao nhiêu?
- 22. Có bao nhiêu tham số chức năng quá nhiều?
- 23. Có bao nhiêu đối tượng được tạo
- 24. Android tôi có thể đi bao nhiêu chủ đề?
- 25. Tôi có thể vượt qua một số cho varchar2 trong Oracle?
- 26. Javascript - có xấu khi vượt qua nhiều đối số hơn hàm khai báo không?
- 27. Làm thế nào để vượt qua tất cả các đối số thông qua kịch bản bash của tôi đến một chức năng của tôi?
- 28. PowerShell vượt qua đối số dòng lệnh
- 29. Chuỗi có bao nhiêu tham số
- 30. Bash: Lấy đối số dòng lệnh đầu tiên và vượt qua phần còn lại
Tôi sẽ nói 0 hoặc nhiều hơn. – leppie