2

たとえば、「tests」というファイルがあるとします。

a
b
c
d

このファイルを1行ずつ読み込もうとしていますが、出力されるはずです

a
b
c
d

「read」というbashスクリプトを作成し、forループを使用してこのファイルを読み取ろうとします

#!/bin/bash
for i in ${1}; do //for the ith line of the first argument, do...
   echo $i  // prints ith line
done

実行します

./read tests

しかし、それは私に与えます

tests

何が起こったのか知っている人はいますか?「テスト」の内容ではなく「テスト」と表示されるのはなぜですか? 前もって感謝します。

4

3 に答える 3

14
#!/bin/bash
while IFS= read -r line; do
  echo "$line"
done < "$1"

このソリューションは、他の応答とは異なり、ファイル名に特殊文字 (スペースやキャリッジ リターンなど) を含むファイルを処理できます。

于 2013-09-27T19:45:18.210 に答える
2

これは私のために働く:

#!/bin/sh

for i in `cat $1`
do
    echo $i
done
于 2013-09-27T19:21:39.543 に答える