justaguy
justaguy

Reputation: 3022

bash not listing files in while loop

The below bash seems to run but no file names are displayed on the terminal screen, rather it just stalls. I can not seem to figure out why it is not working now as it used to. Thank you :).

bash

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

file

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

Upvotes: 0

Views: 36

Answers (1)

Andreas Louv
Andreas Louv

Reputation: 47099

The read command is waiting for input, since nothing is specified it will read from stdin. If you type a few lines and press you will see thats the input for the loop.

But you most likely want to redirect a file to the loop:

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

But afai can understand you have a file with other file names which you would like to run the substitution on, in that case you should use xargs:

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

Upvotes: 3

Related Questions