簡體   English   中英

遍歷“查找”會導致bash

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM