以下代码是来自更大的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
答案 0 :(得分:0)
calc
似乎从标准输入读取,因此您需要阻止它从提供给while
命令的read
循环的流中使用数据:
calc 9 + 10 < /dev/null
答案 1 :(得分:0)
你错过了:'
尝试:
计算'9 + 10'