[英]Looping through “find” result in bash
我正在嘗試遍歷bash腳本中的一堆文件,尤其是我的蜂巢Maven回購中的所有jar。
我寫了以下代碼:
for f in $(find /home/c4stor/.m2/repository/org/apache/hive/ -iname '*.jar'); do
echo "Jar found :":$f;
done
在終端中執行此操作時,將得到以下結果:
Jar found :/home/c4stor/.m2/repository/org/apache/hive/hive-serde/0.10.0-cdh4.2.1/hive-serde-0.10.0-cdh4.2.1.jar
Jar found :/home/c4stor/.m2/repository/org/apache/hive/hive-common/0.9.0/hive-common-0.9.0.jar
(etc....)
當我用完全相同的內容運行bash腳本時,它像這樣:
Jar found :/home/c4stor/.m2/repository/org/apache/hive/hive-serde/0.10.0-cdh4.2.1/hive-serde-0.10.0-cdh4.2.1.jar /home/c4stor/.m2/repository/org/apache/hive/hive-common/0.9.0/hive-common-0.9.0.jar (etc....)
即for在所有串聯的文件路徑的單個元素復合上循環。 這不是我想要的。
有人知道嗎:1.為什么會這樣? 2.如何讓腳本表現得像終端機?
謝謝:) C4stor
為什么會這樣?
for
取決於$IFS
。 你變了$IFS
,因此如何for
工作。
如何讓腳本表現得像終端機?
find ... -print0 | while read -d $'\0' f
do
...
done
while read -d $'\0' f
do
...
done < <(find ... -print0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.