0

私はbashスクリプトを初めて使用するので、ご容赦ください。いくつかのローカル処理を実行し、サーバーに ssh してそこでスクリプトを実行するスクリプトがあります。これは main.sh です。

read -p "Comment: " yn
Echo $yn
ssh user@whatever.com << EOF
  cd public_html/subdir/
  sh db/push.sh
EOF

サーバー上のファイル (push.sh) は次のことを行います。

mysqldump -u user -ppassw dbname > db/db_sync.sql
git commit  -am "$yn"
git push

したがって、基本的には、ssh を介して push.sh に渡される値 $yn (ユーザー入力) が必要です。sshコードブロックに「読み取り」を入れると、スキップされます。

どんな助けでも大歓迎です

ありがとうございました!

4

3 に答える 3

1

以下をお試しいただけますか?

クライアント側:

read -p "Comment: " yn
Echo $yn
ssh maikelva@maikelvanhees.com << EOF
  cd public_html/hackerfit/
  sh db/push.sh "$yn"
EOF

サーバ側:

mysqldump -u user -ppassw dbname > db/db_sync.sql
git commit  -am "$1"
git push
于 2012-12-20T14:40:10.570 に答える
1

試す:

read -p "Comment: " yn
echo $yn
ssh user@whatever.com << EOF
  cd public_html/subdir/
  yn="$yn" sh db/push.sh
EOF

whatever.com サイド スクリプトを変更する必要はありません。

于 2012-12-20T14:52:14.197 に答える
0

はい、デイブGに同意します。

$ ynはすでにローカルシェルによって展開されているので、パラメータとして指定してください

于 2012-12-20T14:44:53.477 に答える