在Bash中查找while循环忽略迭代器的第一个值

时间:2018-05-09 21:27:59

标签: bash

为什么在以下bash脚本中,$ID行中的find在while循环的第一次迭代中没有任何值?

while read -r ID
do
    echo $ID
    cd "`find . -iname "*($ID)"`"  # ← This is the problem line.
    pwd
    cd -
    echo
done < IDs.csv

这是第一次迭代的痕迹

+ read -r ID
+ echo 6518
6518
++ find . -iname '*(6518)' # ← find always returns nothing first iteration.
+ cd ''
+ pwd
/home/Geremia
+ cd /home/Geremia
+ echo
 

但是连续的迭代工作正常:

+ read -r ID
+ echo 6556
6556
++ find . -iname '*(6556)' # ← find returns path all successive iterations.
+ cd './found/dir (6556)'
+ pwd
/home/found/dir (6556)
+ cd /home/Geremia
+ echo
 

即使我将6556放在CSV文件的开头,也会发生这种情况。

0 个答案:

没有答案