我正在使这个Shell脚本变得更快,可以使用gnuplot绘制数据。这是我写的第一篇文章,所以我遇到了一些困难。在我开始制作if语句之前,一切都很好。现在执行此操作将返回此错误:
prova2.sh: 53: prova2.sh: Syntax error: end of file unexpected (expecting "fi")
这是一个例子。我在这里做错了什么?
...
if ["$ANSWER" == "S"]
then
ANSWER= set grid
else
ANSWER=""
echo "you want the plot whit boxes with lines or with points?"
read HOW
if ["$HOW" == "boxes"]
then
P= boxes
else if ["$HOW" == "lines"]
then
P= lines
else if ["$HOW" == "points"]
then
P= points
gnuplot <<EOF
...
fi
这是脚本的if / then / elif / fi部分的更正版本:
if [ "$ANSWER" == "S" ]
then
ANSWER='set grid'
else
ANSWER=""
fi
echo "you want the plot with boxes, with lines, or with points?"
read HOW
if [ "$HOW" == "boxes" ]
then
P=boxes
elif [ "$HOW" == "lines" ]
then
P=lines
elif [ "$HOW" == "points" ]
then
P=points
fi
请注意,=
在设置ANSWER
和时缺少空格P
,并且使用elif
而不是else if
。我还添加的空间之间[
,并且变量被测试[boxes
或者[S
是不一样的[ boxes
或[ S
。前者尝试运行,例如,命令,[boxes
而后者运行[
时的参数为boxes
。
我还输入了引号ANSWER='set grid'
,如果没有引号,引号将被设置ANSWER=set
,然后尝试运行一个名为的命令grid
。从技术上讲,行上也应该有引号P=
,但是在引号后只需要一个单词(没有空格)=
就不需要了。
就我个人而言,我会将then
s与放在同一行if
,elif
因为我认为它使它更具可读性,但这无关紧要-只是样式首选项,代码的工作方式相同。
if [ "$HOW" == "boxes" ] ; then
P=boxes
elif [ "$HOW" == "lines" ] ; then
P=lines
elif [ "$HOW" == "points" ] ; then
P=points
fi
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句