Avevo un file bash che chiedeva all'utente alcuni parametri e usava i valori di default se non veniva dato nulla. Lo script ha poi eseguito altri comandi con i parametri. Questo ha funzionato alla grande - nessun problema fino all'aggiunta più recente.Come leggere l'utente all'interno della linea di lettura while-loop?
In un tentativo di leggere il parametro NAMES da un file txt, ho aggiunto un ciclo while per prendere i nomi nel file, ma mi piacerebbe comunque che venissero richiesti i parametri rimanenti.
Ma una volta aggiunto il ciclo while, l'output mostra il prompt stampato in get_ans() e non si interrompe mai per una lettura, quindi vengono selezionati tutti i valori predefiniti.
Vorrei leggere il primo parametro da un file, quindi tutti i file successivi dal prompt dell'utente.
Cosa ho interrotto aggiungendo il ciclo 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
}
(NOTA:. Codice non è copia & pasta così vi prego di scusare errori di battitura codice vero e proprio ha funzione definita prima del main())
mi piacerebbe guardare le vostre altre risposte (uno dei quali racconta come _solve_ il problema, non solo quello che è) prima di prendere una decisione di accettare. –