Macos ';计算';在while循环中导致bash脚本中出现未定义的变量错误

Macos ';计算';在while循环中导致bash脚本中出现未定义的变量错误,macos,bash,while-loop,calculator,Macos,Bash,While Loop,Calculator,下面的代码是我正在编写的一个更大的bash脚本的一个片段,用于解析氨基酸序列并基于特定的氨基酸对执行计算。为了简单起见,我缩短了它并使其自包含-但我遇到的问题是,如果我运行示例测试计算“calc…”行(下面注释掉了该行),我会得到一个“…未定义”错误-该错误返回到while read循环中的变量。也许这与子shell和/或变量可访问性有关,但我对解决方案感到困惑,尤其是因为我有类似的脚本可以工作 任何帮助都将不胜感激另外,我在MacOSX终端上运行这个 #!/bin/bash #Set inp

下面的代码是我正在编写的一个更大的bash脚本的一个片段,用于解析氨基酸序列并基于特定的氨基酸对执行计算。为了简单起见,我缩短了它并使其自包含-但我遇到的问题是,如果我运行示例测试计算“calc…”行(下面注释掉了该行),我会得到一个“…未定义”错误-该错误返回到while read循环中的变量。也许这与子shell和/或变量可访问性有关,但我对解决方案感到困惑,尤其是因为我有类似的脚本可以工作

任何帮助都将不胜感激另外,我在MacOSX终端上运行这个

#!/bin/bash

#Set input
Seq=HTCHMAREQEMNMHG
SeqMAX=${#Seq}

#set start position for read
Pos=1

#Analyse sequence
echo -e "\nReading: $Seq "

#Read sequence, one character at a time 
while  read -r -n1 Res ; do

    #If Res variable has hit a "blank", then move on
    if [[ $Res = "" ]] ; then

        break

    #Else, if Res variable is the first     
    elif [[ $Pos = "1" ]] ; then

        #Calculate rate

        #UNCOMMENTING THIS LINE CAUSES ERROR
        #calc 9 + 10

            echo "$Left $Right"
            Pos=$((Pos+1))
            Left=$Res

        #Else, if Res variable is the last  
        elif [[ $Pos = $SeqMAX ]] ; then

            Left=$Res
            Right=xC
            ###CALC............
            Pos=$((Pos+1))
            echo -e "$Left $Right"  

        #Finally, if charcter is internal       
        else 

            Right=$Res
            echo "$Left $Right"
            Left=$Res
            Pos=$((Pos+1))

        fi

done < <(echo $Seq)

exit
#/bin/bash
#设置输入
Seq=htchmareqemnhg
SeqMAX=${Seq}
#设置读取的起始位置
位置=1
#分析序列
echo-e“\n正在阅读:$Seq”
#读取序列,一次读取一个字符
而read-r-n1 Res;做
#如果Res变量已命中“空白”,则继续
如果[$Res=”“];然后
打破
#否则,如果Res变量是第一个
elif[$Pos=“1”];然后
#计算比率
#取消对此行的注释会导致错误
#计算9+10
回显“$左$右”
位置=$((位置+1))
左=$Res
#否则,如果Res变量是最后一个
elif[[$Pos=$SeqMAX]];然后
左=$Res
右=xC
###计算。。。。。。。。。。。。
位置=$((位置+1))
echo-e“$左$右”
#最后,如果character是内部的
其他的
右=$Res
回显“$左$右”
左=$Res
位置=$((位置+1))
fi

完成<似乎
calc
从标准输入读取数据,因此您需要防止它在执行
read
命令时使用提供给
的流中的数据:

calc 9 + 10 < /dev/null
calc 9+10
您缺少:'

尝试:


calc“9+10”

暂时忽略您试图在
bash
中执行数据处理的原因,
calc
在哪里定义?确切的错误消息是什么?calc是我安装的一个命令行计算器工具,因为它易于使用,具有更高的功能:但是如果您知道一个更好的工具,它不会引发此错误,我愿意接受建议。至于确切的错误消息,-对于我提供的代码,它是“TCHMAREQEMNMHG”未定义。是否从标准输入读取
calc
?它声称未定义的字符串是
读取
消耗第一个字符后标准输入中剩下的字符串。也许
calc9+10
会有所不同。或者您正在使用另一个未显示的对
calc
的调用?谢谢-添加calc
循环继承其标准输入,与
read
相同,因此两者都从