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

評論