
まず私の状況を説明させてください。.bashrc にエイリアスがあります:
doscript () { ssh root@server$1 -p2202 "bash -s" < ~/scripts/$2 $3; }
基本的に次のようないくつかのアクションで構成されるスクリプトがあります。
check current settings
read comment
do actions
write $comment in a file
restart service
そこでコマンドを実行します
doscript server scriptname parameter
しかし、「コメントの読み取り」部分は機能しません。コメントを入力するまで待つ代わりに、すぐに実行され、コメント ファイルに何も追加されません。
その場合、変数を入力する方法はありますか?
答え1
あまり変更せずにこれを行う通常の方法は、ファイルをリモートにコピーしてから実行し、tty入力にstdinを利用できるようにすることです。例:
scp -P 2202 ~/scripts/$2 root@server$1:./myscript
ssh -t root@server$1 -p2202 bash ./myscript $3
または、scp
その行を
ssh root@server$1 -p2202 'cat >./myscript' <~/scripts/$2