2017-10-07 465 views
0

有一種情況: 我在tsch上寫了腳本來調用python上的其他腳本。 當我從cmd調用python腳本時,它是可以的。 當我調用上TSCH測試腳本,然後我得到錯誤:參數列表過長來自shell腳本的參數列表太長

另一種情況:

git grep -e "alex" -- `git ls-files | grep -v 'bin'` 

我也得到錯誤:Argument list too long。 有什麼問題和如何解決它?

+0

你問「可能是什麼問題」?那麼,參數列表可能太長了,不是嗎?你檢查了它的長度嗎?每個殼都有限制。 – arkascha

+0

我該如何檢查?當我從命令行運行時,我沒有問題。 @arkascha – Alex

+0

那麼,它是如何被稱爲?例如,您可以將參數列表重定向到文件中。 – arkascha

回答

0

更新回答

我不熟悉你所使用的特定git命令,好像你不要麼理智地回覆到註釋中的問題。我猜你可能想是這樣的,雖然:

git ls-files | grep -v 'bin' | xargs -L 128 git grep -e "alex" -- 

原來的答案

經典的方式來解決「錯誤:參數列表太長」xargs。它可用於重複調用您提供的名稱的腳本,或者如果您沒有提供其名稱,則使用有限數量的參數,直到參數全部消耗完。

因此,想象一下你的目錄中有一百萬個文件,那麼ls *將會失敗,但是一個簡單的ls可以工作。因此,我們可以把與使用方法:

ls | xargs -L 128 

將在同一時間撥打echo(因爲我們沒有提供一個實用程序名)多次與128名,直到所有人都回蕩。

所以,你可以這樣做:

ls | xargs -L 128 yourScript.py 

在同一時刻多次與128名打電話給你的Python腳本。當然,你可能會做一些完全不同並且與這種技術不相容的東西,但你的答案目前並不是很有用......

+0

我該如何集成'git grep命令'。即:git grep - 'git ls-files' @Mark Setchell – Alex

+0

您需要在原始問題下單擊'edit',並顯示如何運行該命令,幾條示例輸出行的樣子,以及它們如何需要再處理。 –

+0

對不起,我看不到你實際運行的是什麼命令,也不知道它產生了什麼樣的輸出......我猜grep -v bin部分工作正常,所以我們可以跳過這個,所以你運行'git grep -e「亞歷克斯「 - git ls-files'?它產生了什麼?對不起,我不是'git'的大用戶。 –