18
A
回答
19
我不知道的方式做到這一點,但你可以做到你想用做什麼:
somecommand | while read -r; do echo "Something with $REPLY"; done
這也會更快,因爲你不會爲每一行文本創建一個新的進程。
[編輯2009-07-09] 我做了兩個轉變:
- 結合了使用
-r
禁用反斜線處理litb的建議 - 這意味着在輸入反斜槓將被傳遞通過不變。 - 除了提供變量名稱(例如
X
)作爲參數read
,我們讓read
分配給其默認變量REPLY
。這具有保留前導空間和尾隨空間的愉悅副作用,即使內部空間被保留,也會被剝離。
根據我的觀察,這些更改一起保留了除每個輸入行上的文字NUL(ASCII 0)字符外的所有內容。
[EDIT 26/7/2016]
據評論者Evi1M4chine,運行read X
(例如,與命令IFS='' read X
)也應保持在開始和結束時的空間之前設置$IFS
爲空字符串將結果存儲到$X
,這意味着您不必使用$REPLY
。
3
這是怎麼回事?
somecommand | xargs -d"\n" -I{} echo "the argument is: {}"
(假定每個參數是一條線,以其它方式改變分隔符)
1
如果想僅xargs的(例如由於平行-P N
選項),並且僅bash作爲功能代碼,然後bash -c
可以用作xargs的參數。
seq 1 10 | tr '\n' '\0' | xargs -0 -n 1 bash -c 'echo any bash code $0'
tr和-0選項在此處用於禁用任何xargs參數替換。
7
如果你想要真正的函數,而不僅僅是管道或while循環(例如,如果你想傳遞它們,就好像它們是數據)我只是不做lambda表達式,並定義具有重複虛擬名稱的虛擬函數,馬上使用,然後扔掉。像這樣:
就像在適當的函數式語言,就沒有必要來傳遞參數,你可以在一個閉合將它們包裝:
# Let’s say you have a function with three parameters
# that you want to use as a lambda:
# (As in: Partial function application.)
trio(){ echo "$1 Lambda sees $3 $2"; }
# And there are two values that you want to use to parametrize a
# function that shall be your lambda.
pre="<<<"
post=">>>"
# Then you’d just wrap them in a closure, and be done with it:
λ(){ trio "$pre" "$post" "[email protected]"; }; map λ *
我認爲它比其他更短解決方案介紹在這
0
是的。可以傳遞一個表示命令調用的字符串變量,然後用eval執行該命令。
例子:
command='echo howdy'
eval "$command"
相關問題
- 1. 的lambda函數
- 2. 類頭中的lambda函數
- 3. java中的AWS Lambda函數
- 4. Python的lambda函數
- 5. jython lambda函數
- 6. Lambda函數(.Core)
- 7. PHP lambda函數
- 8. lambda函數(C++)
- 9. 與lambda函數
- 10. 在lambda函數
- 11. lambda函數
- 12. jQuery lambda函數
- 13. Python lambda函數
- 14. numpy的函數數組構造函數中的lambda函數
- 15. lambda函數VS仿函數
- 16. 在lambda函數中返回C++ 11中lambda的類型(平面映射函數)
- 17. 我在bash中的函數
- 18. Bash中的全局函數?
- 19. BASH中的空函數
- 20. python中lambda函數的列表參數
- 21. bash腳本可以寫入AWS Lambda函數內
- 22. LLVM IR Lambda函數
- 23. lambda函數C++ 11
- 24. Python和lambda函數
- 25. 瞭解lambda函數
- 26. AWS Lambda函數+ CloudWatch
- 27. theano和lambda函數
- 28. lambda函數和OOP
- 29. vb lambda MAX函數
- 30. 通用lambda函數
+1,這是真棒! – orip 2009-01-15 19:53:38
我想這個方法在過去的問題是它對於沒有空格的字符串很有用。例如,如果的輸出是文件列表,其中一些文件有空格,則「讀取X」失敗。我已經在某處讀過如何處理這個問題,但似乎從未回憶過這些細節。 –
Daniel
2009-01-29 19:58:38