0

次のことを行う必要があるシェル スクリプトがあります。1) シェル スクリプトは、ログをログ ファイルに保存する必要があります。2)シェルスクリプトは、ユーザーにメッセージを表示して入力を読み取る必要があります。

例:

cat read-test.sh
echo -n "What is your name?"
read user_name

このスクリプトの実行:

./read-test.sh >> read-test.log

予期されるユーザー プロンプト:

What is your name?
rajiv

このスクリプトを次のように実行すると

./read-test.sh

目的の出力が得られます。

しかし、このスクリプトを次のように実行すると

./read-test.sh >> read-test.sh

"名前はなんですか?" 私がしたくないread-test.logファイルに保存されます。

ユーザーにメッセージ(「あなたの名前は何ですか?」)を表示して入力を読み取る方法はありますか?

4

2 に答える 2

2

-pでオプションを使用するとread、プロンプトが標準エラーに出力され、echoステートメントを完全に削除できます。

read -p "What is your name? " user_name

プロンプトは標準エラーに書き込まれるため、オペレーターread-test.logによって含まれません。>>

于 2012-07-09T19:10:22.213 に答える
1

最善の答えは、そのようにリダイレクトしたい理由によって異なりますが、考えられる簡単な解決策の 1 つは、echo次のように行を変更することです。

echo -n "What is your name?" > /dev/tty
于 2012-07-09T18:18:49.873 に答える