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.