単純な.shスクリプトを使用しているので、read
一緒にコマンドを使用しようとしています。wget
# echo "Please answer by : -> yes <- or -> no <-"
# read answer
# echo $answer
このコードはローカルではうまく機能しますが、read
コマンドはリモートで失敗しwget
、応答を待たずに完了します。
# wget -qO - 'https://testserver/pub/test.sh' | bash -x
# + echo 'Please answer by : -> yes <- or -> no <-'
# Please answer by : -> yes <- or -> no <-
# + read answer
#
ご協力ありがとうございます。
ベストアンサー1
bash
端末でスクリプトを実行すると、bashは標準入力(一つしかありません)キーボードから。
keyboard -> script
スクリプトをbash
パイプに供給すると、パイプは次のようになります。標準入力。したがって、次のようにすると、問題はwgetとは関係ありません。
cat test.sh | bash -x
入力がキーボードではなくパイプから出てくるので、同じ動作をします。スクリプトはbash
それを継承します。標準入力。
pipe -> script
パイプラインのデータが完了すると、bashとスクリプトも完了します。
この問題を解決する1つの方法はダウンロードして実行することです(必ずしもそうではありませんが、-O
行をそのまま維持したい)。このような:
$ wget -qO test.sh 'https://testserver/pub/test.sh' && bash test.sh