Ciclo fino a quando l'utente preme 'C' nel file sh


0

Quello che voglio è il seguente:

All'inizio quando l'utente esegue il file .sh visualizza quanto segue:

Review id:
You id is:XXX000YYY
Do you want to change it?[Press Y to change, C to continue]:

Ora Se l'utente preme Y lascia che cambi id e lo mostri di nuovo, e fallo finché l'utente non preme C continuare. Come posso farlo nello script di shell?


Ho provato a seguire ma non so cosa scrivere in condizioni ???

while :
do
  echo "Enter id:"
  read line
  echo "Your id: $line"
  echo "Do you want to change(Y to change, C to conntinue)?"
  read ans
  if [ $ans = C ] || [ $ans = c ]; then
  /// .... finish the loop
  elif [ $ans = y ] || [ $ans = Y ]; then
  /// .... continue while loop
  else
  echo "Wrong selection."
  /// .... continue while loop
  fi
exit 0

L'ho modificato in seguito, ma ora è in loop infinito:

echo "Enter id:"
read line
echo "Your id: $line"
echo "Do you want to change(Y to change, C to conntinue)?"
read ans
while [ $ans = y ] || [ $ans = Y ];:
do
  echo "Enter id:"
  read line
  echo "Your id: $line"
  echo "Do you want to change(Y to change, C to conntinue)?"
  read ans
done

1
Il Guida avanzata di scripting BASH può aiutarti a decifrare da dove cominciare
uSlackr

Dove ha scritto condition in while statement?
Harry Joy

Ho aggiornato la domanda con il mio tentativo. Puoi aiutarmi in cosa scrivere if parte?
Harry Joy

1
Questa forse è una domanda migliore per unix.stackexchange.com
chrisjlee

Risposte:


0

Il problema sta in questa linea:

while [ $ans = y ] || [ $ans = Y ];:

quale dovrebbe essere

while [ $ans = y ] || [ $ans = Y ];

Il problema è che i due punti sono un built-in bash che viene interpretato come true. Maggiori informazioni a Qual è lo scopo del `: '(due punti) GNU Bash Builtin? .

Il seguente codice funziona per me

#!/bin/env bash
echo "Enter id:"
read line
echo "Your id: $line"
echo "Do you want to change(Y to change, C to conntinue)?"
read ans
while [ $ans == y ] || [ $ans == Y ] ;
do
echo "ANS: ${ans}"
  echo "Enter id:"
  read line
  echo "Your id: $line"
  echo "Do you want to change(Y to change, C to conntinue)?"
  read ans
done

Nota: è sempre meglio includere a faccenda nella parte superiore dei tuoi script.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.