while循环中的'calc'会在bash脚本中导致未定义的变量错误

时间:2014-03-27 10:29:00

标签: macos bash while-loop calculator

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

任何帮助将不胜感激。 - 另外,我在mac OSX终端中运行它。

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

2 个答案:

答案 0 :(得分:0)

calc似乎从标准输入读取,因此您需要阻止它从提供给while命令的read循环的流中使用数据:

calc 9 + 10 < /dev/null

答案 1 :(得分:0)

你错过了:'

尝试:

计算'9 + 10'