このスクリプトが私が望むように動作するようにするにはどうすればよいですか?
#!/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
【カバーフェイス】