SSHセッション後のCase文の構文エラー

SSHセッション後のCase文の構文エラー
#!/bin/sh

echo -n "Enter the raspberry ip address you want to connect:"
read Rasp_id

sshpass -p "the@Donut" ssh -t -X -oStrictHostKeyChecking=no pi@$Rasp_id << E2
        echo -e "Enter the case you want to echo\n 1.1 a \n 2.1 b"
        read option
        case "\$option" in
        1)
        echo "a"
        ;;

        2)
        echo "b"
        ;;
esac
E2

SSHセッションを開始してからリモートシステムでいくつかの修正を実行するスクリプトを作成していますが、次の構文エラーが発生します。

bash: line 3: syntax error near unexpected token `)'
bash: line 3: `        1)'

ベストアンサー1

問題は、stdinの使用を混在させてリモートシステムで実行されるプログラムに入力を提供し、そのプログラムに入力することです。

作成したとおり、次のことが発生します。

  • リモートシェルはecho -e "Enter the case you want to echo\n 1.1 a \n 2.1 b"stdinから読み込み、それをエコーし​​ます。
  • リモートシェルはread optionstdinから読み取り、読み取りを実行します。
  • read標準入力から読み込み、case "\$option" inそれのオプションを設定します。
  • リモートシェルは1)stdinから取得し、構文エラーを提供します。

おすすめ記事