スクリプトからコンソール入力を読み取るコマンドにシェル変数を渡すにはどうすればよいですか?

スクリプトからコンソール入力を読み取るコマンドにシェル変数を渡すにはどうすればよいですか?

ユーザーにプロンプ​​トにいくつかのデータを入力するように要求するコマンドを使用するスクリプトを作成しようとしています。

スクリプトに含めたいとしましょうgit push。 (これが最善の方法ではないことを知っていますが、このように尋ねることが何であるかは誰もが理解するでしょう。)

git pushしたがって、コンソールで使用するときにユーザー名とパスワードを要求します。gitシェルスクリプトから呼び出すときにそれを渡し、両方をシェル変数として保存するにはどうすればよいですか?

次のように見えます。

#!/bin/bash

git push
$user
$password

ベストアンサー1

最も簡単な方法は外部コマンドにパイプするようです。

printf "%s\n%s\n" "$user" "$password" |command_expects_username_and_password

$user$passwordこれにより、後に改行文字が続く内容が出力され、出力がstdin外部プロセスにリダイレクトされます。インタラクティブに呼び出す場合、ユーザーはその順序でユーザー名とパスワードを入力する必要があります。

もっと複雑な作業をしたい場合は、次のことを検討してください。スクリプト。

ノートKusalanandaが言ったように、stdinこれはプログラムが端末デバイスから直接ではなくこの情報を読み取る場合にのみ機能します(ただし、これは認証情報を要求するときに一般的なようです)、実際に適用するときは機能しませんgit(あなたが次のように提供しました)。使用例)。

おすすめ記事