我們經常遇到這樣的業(yè)務場景,我們開發(fā)了一個線上工具,需要在Linux操作系統(tǒng)下面執(zhí)行處理某些事情,例如我們開發(fā)了一個將用戶某個活動數(shù)據(jù)清0的工具,命令如下:。/clearTools -v 12306,意思是將用戶id為12306的使用次數(shù)清零。
這里有些同學可能會問,為什么我們需要開發(fā)工具,而不是直接從數(shù)據(jù)庫中將次數(shù)清0,這是因為在生產環(huán)境中,任何一項業(yè)務都可能耦合眾多業(yè)務邏輯,不是簡單處理一張表就行,所以我們常常需要開發(fā)工具。
有一天,因為一些不知名的原因,反正肯定不是代碼的bug,產品給了一批用戶的id,需要我們將他們的參與次數(shù)重置,可是我們原來的工具只是處理單個用戶的,如何快速地將工具改成可以批量執(zhí)行多個用戶呢?
方法一
我們可以修改工具的代碼,讓其讀入一個文件,然后再依次執(zhí)行,把原有的單個工具改成批量工具。這個方法雖然很好,但是難免顯得有些太笨,作為一個極客程序員,這是難以接受的。
方法二
我們寫一個shell腳本,在腳本里面讀入文件,然后依次執(zhí)行。這種方法雖然不用修改代碼,但是也要寫新的代碼,雖然比上述方法更加可用,但是還是不夠極客。
方法三
使用Linux的xargs命令,xargs命令是給其他命令傳遞參數(shù)的一個過濾器,也是組合多個命令的一個工具。它擅長將標準輸入數(shù)據(jù)轉換成命令行參數(shù),xargs能夠處理管道或者stdin并將其轉換成特定命令的命令參數(shù)。
上述的例子,我們只要這么做,cat list.txt | xargs -I {} 。/clearTools -v {} 即可。在這個命令中,對于輸出的每一行,都會匹配-I參數(shù)后面的花括號,然后將其替換成讀入的文件行。
總結
是不是非常的簡單,我們只要一行簡單的命令行,就可以輕松的把單個工具修改變成批量執(zhí)行的工具,大大提高了生產效率。怎么樣,學會了么?歡迎關注我,我們一起學習共同進步。大家的支持是我繼續(xù)嘮嗑的動力。
-
Linux
+關注
關注
87文章
11292瀏覽量
209326
發(fā)布評論請先 登錄
相關推薦
評論