web-dev-qa-db-ja.com

bashスクリプトの実行中に入力を待つ

私はこの質問を見ました: 実行を一時停止し、ユーザー入力を待つ ですが、私の問題は異なります。

私にはコマンドがあります:

google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless --client-secrets src/.config/client_secret_71131800372-dop7miagipbqink2ecnr33so61q3li0t.apps.googleusercontent.com.json

このコマンドはリンクを提供し、そのリンクに承認コードを取得します。このコマンドは、ターミナルでauthorization codeを入力するまで待機し、authorization codeを入力した後、さらに処理が行われます。

このコマンドの出力は次のとおりです。

Please visit this URL to authorize this application: 

https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=71131800372-dop7miagipbqink2ecnr33so61q3li0t.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fassistant-sdk-prototype&state=jFHZmMINesXNFbPNR6ZeJcuDVzpmYq&Prompt=consent&access_type=offline
Enter the authorization code:

script.shと呼ばれるbashスクリプトでこのコマンドを記述してそのスクリプトを実行すると、user inputof認証コードおよびさらに処理が行われます。

bash scriptで実行する場合、承認コードを待つ必要があります。

どうすればいいですか?

3
PRATEEK AGRAWAL

readコマンドを使用して、STDINから読み取ることができます。

read -n NUM -p "Enter the authorization code:" VAR

NUMSTDINから読み取る文字数
VAR:入力を保存する変数

文字数がわからない場合、またはSTDINから無制限の文字を読みたい場合は、-n NUMを削除できます。これにより、readコマンドはENTERで終了し、結果(認証コード)を$VARに保存します。

3
Ghasem Pahlavan