Gnuplot シェルスクリプト

Gnuplot シェルスクリプト

私はgnuplotを使ってデータをより速くプロットするためにこのシェルスクリプトを作成しています。これは私が最初に書いたssなので、少し難しいです。 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

ベストアンサー1

以下は、スクリプトの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

=andが設定され、notが使用されている場合はANSWER空白が不足していることに注意してください。また、テスト中の変数または他の変数の間にスペースを追加しました。前者は、例えばコマンドを実行しようとし、後者は引数を使用して実行します。Pelifelse if[[boxes[S[ boxes[ S[boxes[boxes

また、ANSWER='set grid'引用符がない場合は、設定する引用符を追加してからというANSWER=setコマンドを実行してみましたgrid。技術的には、その行にも引用符を付ける必要がありますP=が、後ろに1つの単語がなければ(スペースなしで)=必要はありません。


個人的に、私はsをthentheと同じ行に置き、読みやすさが良いと思いますが、実際には重要ではありません。これはスタイルの好みに過ぎず、どちらの方法でもコードが機能します。メソッドはすべて同じです。ifelif

if [ "$HOW" == "boxes" ] ; then
    P=boxes
elif [ "$HOW" == "lines" ] ; then
    P=lines
elif [ "$HOW" == "points" ] ; then
    P=points
fi

おすすめ記事