BASHでファイルの内容を1行ずつループする

私はinstaller.txtというファイルを持っています。このファイルには、以下のような.tar.gzファイルのURL行が1行ずつ入っています。

http://oscargodson.com/projects/example1.tar.gz
http://oscargodson.com/projects/anotherexample.tar.gz
http://oscargodson.com/projects/onemore.tar.gz 

私は試しました:

#!/bin/bash
file = `cat installs.txt`
for word in file; do
  echo $word
done

しかし、私の出力は次のようなものです:

Oscars-MacBook-Air:Desktop oscargodson$ ./test.sh
=:                                                     cannot open `=' (No such file or directory)
http://oscargodson.com/projects/example1.tar.gz:       cannot open `http://oscargodson.com/projects/example1.tar.gz' (No such file or directory)
http://oscargodson.com/projects/anotherexample.tar.gz: cannot open `http://oscargodson.com/projects/anotherexample.tar.gz' (No such file or directory)
http://oscargodson.com/projects/onemore.tar.gz:        cannot open `http://oscargodson.com/projects/onemore.tar.gz' (No such file or directory)
file

それは、それぞれの行を出力する必要があります、または私は思った。アイデア?

ベストアンサー

実際には、代入文によってエラーが生成されています。あなたはあなたの課題の周りにスペースがありません。そして、常にrhsを引用するのは良い習慣です。だからあなたが望むのは

#!/bin/bash -u
file="$(cat installs.txt)"
for word in $file; do
  echo $word
done

また、これを推奨する方法としてqoutesを $()に変更しました。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です