2017-05-09 22 views
1

私はbashスクリプトからファイルの作成を自動化しています。 rc_notes.txtというファイルを生成しました。このファイルには2つのタグからのコミットメッセージがあり、新しいファイルにそのファイルをrc_device.txtとして書き直したいと思います。ユーザーが終了したいときにbashスクリプトからSTDINを終了する

私はユーザーに顧客リリースノートを書いて、私がターミナルでプロンプトを出すBASHSTDINから出て欲しいです。

私のスクリプトの問題は、ファイルのクローズをトラップできないことです。

お手数ですが、私は密接なシグナルを捉えたくありません。私は魔法の文字列の例:Doneまたはスクリプトから正常に終了するSTDINのクロージャをトリガする文字列を入力したいと思います。


マイスクリプト:

#/bin/bash 

set -e 


echo "Creating the release candiate text" 
rc_file=rc_updater_notes.txt 
echo "=========Reading the released commit message file==========" 
cat $rc_file 
echo "=========End of the commit message file==========" 

echo "Now write the release notes" 

#exec < /dev/tty 
while read line 
do 
    echo "$line" 
done < "${1:-/dev/stdin}" > rc_file.txt 

これは、ファイルを作成していますが、私はctrl+Dまたはctrl+zを入力することにより、手動で終了する必要があります。私はそれをしたくありません。助言がありますか?

+0

に入っていますか? –

+0

私はユーザーに "完了"として文字列を入力させたい。私はこの文字列を捕まえて、STDINを閉じるか終了したいと思っています。 – LethalProgrammer

答えて

1

"完了" と、ループを破るために

while read line 
do 
    if [[ $line = Done ]]; then 
     break; 
    fi 
    echo "$line" 
done < "${1:-/dev/stdin}" > rc_file.txt 

ユーザーが標準入力、Ctrl + CまたはCtrl + Dを閉じ方法
while read line && [[ $line != Done ]] 
do 
    echo "$line" 
done < "${1:-/dev/stdin}" > rc_file.txt 
+0

これは私が探しているものです。私は信号をトラップしたくありません。ありがとう。 – LethalProgrammer

関連する問題