如何强制该脚本执行我想要的操作?
#!/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()
读取第二个字符。然而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
少了一个破折号!
IFS='' read -r -n1 CHAR
[捂脸]