bash不在while循环中列出文件

时间:2016-06-04 13:23:02

标签: bash sed

下面的bash似乎已经运行,但终端屏幕上没有显示文件名,而只是暂停。我似乎无法弄清楚为什么它现在不像过去那样工作。谢谢你:)。

的bash

while read line; do
sed -i -e 's|https://www\.example\.com/xx/x/xxx/||'  /home/file
echo $line
done

文件

Auto_user_xxx-39-160506_file_name_x-x_custom_xx_91-1.pdf
Auto_user_xxx-48-160601_V4-2_file_name_x-x_custom_xx_101.pdf
coverageAnalysisReport(10).zip

1 个答案:

答案 0 :(得分:3)

read命令正在等待输入,因为没有指定它将从stdin读取。如果你输入几行并按下,你会看到循环的输入。

但是你很可能想要将文件重定向到循环:

while IFS= read -r line; do
  printf "%s\n" "$line"
done < /home/file

但afai可以理解你有一个文件,其中包含你想要运行替换的其他文件名,在这种情况下你应该使用xargs

xargs -n 1 -I {} sed -i -e 's|https://www\.example\.com/xx/x/xxx/||' {} < /home/file