2011-10-20 19 views
1

私は値を要求するシェルスクリプトを作成しています。入力された値に応じて値を返します。私は「file.txtは」と呼ばれるファイルを持っていると私はコマンド置換bashスクリプトの対話型コマンド

vi `./reve` 

を行う場合は、次に、ユーザの入力を待ち、それが「レーヴ」と呼ばれていることを想像し

read fname 
rev << EOF 
$fname 
EOF 

のようなものが含まれています。私が "txt.elif"と入力すると、viは "file.txt"を開きます。今まで修正する。しかし問題は、スクリプトが次のようなものである場合です。

echo "Enter inverted file name" 
read fname 
rev << EOF 
$fname 
EOF 

次に、「反転ファイル名を入力してください」というファイルを開こうとします。

テキストを使用して値を要求することは可能ですか?使用した後は戻り値のみを使用できますか?

ありがとうございます。

答えて

3

あなたが本当にそれが対話する必要がある場合は、stderrの代わりににメッセージを印刷することができます。

echo "Enter inverted file name" > /dev/stderr 
read fname 
rev << EOF 
$fname 
EOF 
1

あなたが本当に古いシェルを使用している場合を除き、readはプロンプトを供給する-pオプションを持っている必要があります。それは自動的にプロンプ​​トが標準出力の代わりにstderrに送り、改行(その応答はプロンプトと同じ行にある)スキップ:への書き込み、および/dev/ttyを使用して、端末からの読み取り

read -p "Enter inverted file name: " fname 
rev << EOF 
$fname 
EOF 
1

フォース。あなたの例では

これは次のようになります。

echo -e "Enter inverted file name: \c" > /dev/tty 
read fname < /dev/tty 
rev << EOF 
$fname 
EOF 

私は何の改行が印刷されていないし、あなたの入力は、同じ行に入力されecho -e ... \cを使用。

関連する問題