2016-03-07 5 views
5

次はRHELの/etc/init.d/functionsにあります。私はループの間に出会ったときに__pids_var_run()関数が何をするのかを調べようとしています。whileループ後の左角カッコはbashで何を意味しますか?

  while : ; do 
        read line 
        [ -z "$line" ] && break 
        for p in $line ; do 
          if [ -z "${p//[0-9]/}" -a -d "/proc/$p" ] ; then 
            if [ -n "$binary" ] ; then 
              local b=$(readlink /proc/$p/exe | sed -e 's/\s*(deleted)$//') 
              [ "$b" != "$binary" ] && continue 
            fi 
            pid="$pid $p" 
          fi 
        done 
      done < "$pid_file" 

while : ; do ; ... done < "$pid_file"は何かを説明できますか?より具体的には、doneの後の最後の部分は、それ以外の部分は多かれ少なかれ分かります。

+0

これは、コマンドの実行後と同じことを意味します。 –

答えて

4

これは、stdinから何かを読み込むループ内のコマンドは、キーボードの代わりに、指定されたファイルから読み込むことを意味します。

この場合、特にループではread lineを使用してstdinから1行を読み込みます。したがって、$pidfileからリダイレクトすると、1行ずつ効果的にファイルが読み込まれます。

リダイレクトについてさらに読むには、Illustrated redirection tutorialがあり、this Bash GuideLhunathおよびGreyCatであることが推奨されます。

私はこのquesitonはすでに(私は恵みをしたので、私はコメントすることはできません)回答されていますが、私はあなたがチャンスを得るときにこのサイトをチェックすべきだと思うことがわかり
+3

Inは、ファイルからstdinを取ることを意味します。キーボードとは何の関係もありません。多くの場合、stdinはキーボードに関連付けられていますが、2つを組み合わせるのは間違いです。 –

+0

確かに、私はそれを説明するレベルを知らなかった。 – alfC

+0

技術的には、 'while'複合コマンド自体の標準入力を指定します。本体からのコマンドは、それ自身の標準入力を継承します。 – chepner

関連する問題