2014-07-03 65 views
-1

我正在執行一個shell腳本,在高級別上它從csv中讀取記錄並因此執行一些數據庫操作。 我已通過手動運行腳本進行分析。它可以在文件中少於900條記錄的情況下正常運行,但它會爲超過900條記錄提供錯誤。下面是我在一段時間後得到錯誤的截圖:參數列表太長,無法輸入

還有就是,以1抓取記錄1腳本的一部分:

能否請你說明爲什麼發生這種情況?當用戶遇到錯誤時,我已閱讀過類似的主題,但無法將它們與我的scneario相關聯。

乾杯

+0

我不認爲你貼線109-111,其中的錯誤發生。 – Barmar

+0

_請問爲什麼會發生這種情況?_ ...因爲*參數列表太長*。記錄傳遞給shell,shell對參數列表長度有限制。 – vaxquis

+1

嘗試用'find查找'find * XYZ * .csv> list_of_files.txt'。 -name「* XYZ * .csv」> list_of_files.txt'以避免混淆。 – Cyrus

回答

2

我以前打這個問題,這是很容易複製:

unset a; export a=$(perl -e 'print "a"x(1024*64)'); whoami 
tiago 

unset a; export a=$(perl -e 'print "a"x(1024*128)'); whoami 
bash: /usr/bin/whoami: Argument list too long 

perl -e 'print "a"x(1024*64)' | wc -c 
65536 

perl -e 'print "a"x(1024*128)' | wc -c 
131072 

所以,65536個131072字節符之間的東西,當我有這個問題,而不是出口值I正在打印和使用管道來處理數據。另一種解決方法是使用文件。

你可以找到很好的實驗:What is the maximum size of an environment variable value?