Bashスクリプトの読み取りコマンドは読み取りコマンドとして実行されず、テキストをコマンドラインに直接出力します。

Bashスクリプトの読み取りコマンドは読み取りコマンドとして実行されず、テキストをコマンドラインに直接出力します。

一部のコマンドを自動化するためにbashスクリプトを作成しましたが、スクリプトの最初の行が実行する必要があるコンピューターでは機能しません。コードは以下のように表示されます。

#!/bin/bash 
#some comments
read -p 'press enter to begin'
echo "Please Wait..."
#rest of the script

これは自動化スクリプトの非常に簡単な実行であり、スクリプトをテストして実行するために使用する仮想マシンでは正常に実行されますが、作業環境でスクリプトが実行されると、テキストをコマンドライン read -p 'press enter to begin'に直接出力して停止します。 running;プロンプトを使用してコマンドの目的の結果を読み取るのではなく、ユーザーpress enter to beginの入力を待ってから、スクリプトが実行されたPlease wait...ときにそれをエコーし​​ます。

sudo bash ./path/to/file.sh

オンラインでこの問題に関する情報が見つからないため、この問題を解決するにはどうすればよいかわかりません。

すべての基本的なトラブルシューティング手順を行いました。ファイルが実行可能であることを確認し、実行時に bash ファイルとして指定し (bash コメントなしでは実際には実行されません)、コマンドからスクリプトから同じファイルを直接実行しました。 lineコマンドの結果を読み(必要なものを出力してpress enter to begin)、ユーザー入力を待ちます。どんな提案がありますか?set -x今日または明日の機会になると、このコマンドを使用してスクリプトを実行する予定です。

答え1

読み取りコマンドを使用するとスクリプトが破損する理由がわかりました。

read -p 'prompt'

変える

read -p "prompt"

二重引用符に変更したところ、この質問で質問した始めにスクリプトが正しく実行されました。この特定の形式でスクリプトがクラッシュするのはなぜですか?わかりません。私が使用しているコンピュータは非常に面倒で、他の環境で動作する必要があるものについて奇妙なフォーマット設定があります。

関連情報