複数のシェル機能のstdinリダイレクト[閉じる]

複数のシェル機能のstdinリダイレクト[閉じる]

このスクリプトが私が望むように動作するようにするにはどうすればよいですか?

#!/bin/bash

function One()
{
  IFS='' read -r -n1 CHAR
  echo "One: '$CHAR'"
  Two
}

function Two()
{
  IFS='' read -r n1 CHAR
  echo "Two: '$CHAR'"
}

One < MyFile.txt

何ですかしなければならない何が起こるのかは、One()最初の文字を読み、MyFile.txt次にTwo()2番目の文字を読むことです。しかし、Two()いつもヌル文字を読んでいますが、その理由はわかりません。なぜ...どのようなヒントがありますか?

# bash -x Test.sh
+ One
+ IFS=
+ read -r -n1 CHAR
+ echo 'ONE: '\''S'\'''
One: 'S'
+ Two
+ IFS=
+ read -r n1 CHAR
Two: ''

答え1

ガア!私はちょうど見つけました...そうです。良い他の関数を呼び出すと、リダイレクトがリセットされます。しかしそれは真実ではない。これ本物質問はさらに愚かです。

IFS='' read -r n1 CHAR

ダッシュ1つがありません!

IFS='' read -r -n1 CHAR

【カバーフェイス】

関連情報