私はbashファイルを持っていました。このファイルは、ユーザーに何らかのパラメータを入力させ、何も与えなければデフォルトを使いました。その後、スクリプトはパラメータとともに他のコマンドを実行しました。 これは素晴らしく、最近の追加までは問題ありませんでした。whileループの読み取り行の中でユーザーから読み取る方法は?
txtファイルからNAMESパラメータを読み取ろうとすると、ファイルの名前を取り込むためにwhileループを追加しましたが、残りのパラメータの入力を求められます。
しかし、whileループを追加すると、出力にはget_ans()で印刷されたプロンプトが表示され、読み込みが一時停止されることはなく、すべてのデフォルトが選択されます。
私は、ファイルから最初のパラメータを読み込み、それからすべての後続ファイルがユーザにプロンプトされないようにしたいと思います。
whileループを追加することで何が壊れましたか?
cat list.txt |
while read line
do
get_ans "Name" "$line"
read NAME < $tmp_file
get_ans "Name" "$line"
read NAME < $tmp_file
done
function get_ans
{
if [ -f $tmp_file ]; then
rm $tmp_file
PROMPT=$1
DEFAULT=$2
echo -n "$PROMPT [$DEFAULT]: "
read ans
if [ -z "$ans" ]; then
ans="$DEFAULT"
fi
echo "$ans" > $tmp_file
}
(注:コードは非常にタイプミスを言い訳してください&ペーストをコピーされていない実際のコードは、メインの前に定義された関数()がある。)は、コマンドライン上の他に
私は受け入れる決定を下す前に、それがあるだけで何も問題がない_solve_する方法を説明します一つは、あなたの他の回答()を見てみたいです。 –