Redirecionar stdin para várias funções do shell [closed]

0

Estou surpreso que ninguém tenha perguntado isso antes - talvez eu seja tão burro assim?

Como eu forço esse script a fazer o que eu pretendia?

#!/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

O que supõe acontecer é que One() lê o primeiro caractere de MyFile.txt e, em seguida, Two() lê o segundo caractere. No entanto, Two() sempre lê um caractere vazio, e eu não tenho absolutamente nenhum motivo para por quê ... Alguma dica?

# bash -x Test.sh
+ One
+ IFS=
+ read -r -n1 CHAR
+ echo 'ONE: '\''S'\'''
One: 'S'
+ Two
+ IFS=
+ read -r n1 CHAR
Two: ''
    
por MathematicalOrchid 16.07.2015 / 14:36

1 resposta

1

GAH! Eu acabei de descobrir ... Parece que o redirecionamento é redefinido quando você invoca outra função. Mas não é isso. O problema real é muito mais idiota:

IFS='' read -r n1 CHAR

Há um traço faltando!

IFS='' read -r -n1 CHAR

[facepalm]

    
por 16.07.2015 / 14:43