bash函數可以接受的參數個數是有限的嗎?可以將多少個參數傳遞給bash函數?
5
A
回答
4
10
要訪問函數的參數,你可以在它們之間迭代:
foo() {
for arg # "in [email protected]" is implied
do
echo $arg
done
}
或
bar() {
while [ $1 ]
do
echo $1
shift
done
}
或訪問特定的參數:
baz() {
# for arguments above $9 you have to use curly braces
echo $1 $9 ${10} ${121375}
}
4
的數量是相當大的:
$ 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
正如您所看到的,它大於the kernel ARG_MAX limit,這很有意義,因爲Bash不會調用execve(2)
來調用Bash定義的函數。
我得到malloc
失敗,如果我嘗試執行2^32範圍內的Bash序列擴展({1..NUM}
),所以有一個硬性限制的地方(可能你的機器上有所不同),但Bash是如此之慢,一旦你得到上述2^20個參數,在達到硬限制之前,你會達到性能極限。
相關問題
- 1. 將bash函數參數傳遞給emacs
- 2. 將多個參數傳遞給函數
- 3. 將可選的多個參數傳遞給一個函數
- 4. 多個參數傳遞給bash腳本
- 5. 可以將可變數量的參數傳遞給函數嗎?
- 6. bash:將整個命令(帶參數)傳遞給函數
- 7. 通過函數將多個參數傳遞給函數
- 8. 將數組傳遞給bash函數
- 9. 是否可以將值傳遞給PHP中函數的參數?
- 10. 我可以將參數傳遞給PowerShell函數Unix方式嗎?
- 11. 我可以將參數傳遞給std :: vector排序函數嗎?
- 12. 我可以將參數傳遞給模型函數嗎?
- 13. 確定實際傳遞給VBA函數的多少個(可選)參數?
- 14. bash將參數傳遞給xml ed
- 15. 將bash參數傳遞給python腳本
- 16. Python封裝將參數傳遞給bash
- 17. 如何將數組作爲多個參數傳遞給函數?
- 18. 如何將多個值傳遞給數組參數函數
- 19. 是否可以將多個參數傳遞給multiprocessing.pool?
- 20. 使用單個對象將多個參數傳遞給函數?
- 21. 將多個參數傳遞給一個函數?
- 22. C++將可變數量的參數傳遞給一個函數
- 23. 將可選數量的參數傳遞給另一個函數
- 24. 將數組傳遞給函數參數
- 25. 如何將強引號作爲參數傳遞給bash函數
- 26. 將參數傳遞給Bash命令行中的函數
- 27. 將參數傳遞給bash函數會導致錯誤
- 28. 將參數傳遞給bash函數時,「$ @」和「$ *」之間的區別
- 29. 將參數傳遞給bash中的if語句中的函數
- 30. 動態地將參數傳遞給可變參數函數
我會說0或更多。 – leppie 2010-10-21 09:41:51