-4

が使用されている部分を説明できる人はいますかread i。はどこiから来たのですか。

scp -i ~/.ssh/id_rsa.sample gaara@stuid.student.com:ready/$2/*.zip ./$2 > slate.out 2>&1

ls -1 $2/* > curr.lst 2>/dev/null

while
read i
do
  if
    test -e ../done/"$i"
  then
      diff "$i" ../done/"$i" >/dev/null 2>&1
    if
      test $? -eq 0
    then
      rm "$i"
    fi
  fi
done < curr.lst
4

2 に答える 2

4

この構文readは、ファイルから複数の行を処理するために一般的に使用されます。内側のループを省略して単純化しましょう。

while
read i
do
  # Process i
done < curr.lst

'while x do; done' 構文は非常に基本的で簡単に理解できますが、I/O リダイレクトを追加すると混乱する可能性があります。< curr.lstafterを追加すると、done「このファイルの内容をstdin条件として使用する」という意味になります。したがって、ループを省略すると、次のようになります。

read i < curr.lst

readが入力を取得しcurr.lst、変数iを各行の内容に設定していることは明らかです。つまり、そのコード ブロックが基本的に意味することは、「の各行をループ内のコードでcurr.lst変数として処理する」ということです。i

于 2013-10-21T14:56:33.680 に答える
3

"read" 、man ページ (man pageシェルで入力) によると、ファイル記述子から読み取ります。

コードでは、「curr.lst」の各行に対してループが作成され、変数に入れられます$i

于 2013-10-21T14:49:13.973 に答える