Newsgroup: it.comp.os.linux.iniziare
Titolo: Script bash

Ho bisogno di fare uno script abbastanza semplice (almeno spero) 
eseguendo il quale dovrei poter scegliere tra una serie di opzioni, 
tipo menù:
A) prima scelta
B) seconda scelta
C) terza scelta
Ecc ecc
In base alla lettera scelta dovrei lanciare un eseguibile diverso.
Mi sapete indicare dove posso trovare documentazione in merito oppure 
da dove partire per implementarlo?
Ciao,
grazie.

 Ecc ecc
man dialog per la parte "grafica" ...
ciao ...
-- 
#include <stdio.h>
int main(void){char c[]={10,65,110,116,111,110,105,111,32,98,97,114,98,111,110,
101,32,60,104,105,110,100,101,109,105,116,64,116,105,115,99,97,108,105,110,101,
116,46,105,116,62,10,10,0};printf("%s",c);return 0;}

sagi wrote:

Puoi partire da qui, per approfondimenti vai di google o di man:
#!/bin/sh
BON=`tput smso`
BOFF=`tput rmso`
while :
do
   clear
   echo
   echo  "       ${BON} Menu ${BOFF}"
   echo
   echo  "${BON}(A)${BOFF} Prima Scelta"
   echo
   echo  "${BON}(B)${BOFF} Seconda Scelta"
   echo
   echo  "${BON}(C)${BOFF} Terza Scelta"
   echo
   echo  "${BON}(X)${BOFF} Esci"
   echo
   echo -n "Scelta: "
   read  CHOICE
   case $CHOICE in
      x|X) exit 0
         ;;
      a|A) dmesg | tail
         sleep 3
         ;;
      b|B) ls
         sleep 3
         ;;
      c|C) ps aux | tail
         sleep 3
         ;;
   esac
done

 Puoi partire da qui, per approfondimenti vai di google o di man:
Grazie, inizio a fare qualche prova.
Ciao.

> man dialog per la parte "grafica" ...
Scusami ma non ho capito; comunque mi servirebbe qualcosa da console.
Grazie
ciao.

> Scusami ma non ho capito; comunque mi servirebbe qualcosa da console.
DIALOG(1)                                                                                                                          DIALOG(1)
NAME
dialog - display dialog boxes from shell scripts

Ok, scusami ma mi ero perso.
Ho provato a documentarmi e ho trovato uno script che farebbe proprio 
al caso mio; per fare una prova l'ho copiato pari pari ma mi da errore.
Lo script è questo:
# INIZIO SCRIPT #
#!/bin/bash
dialog --menu "Menù di scelta" 0 0 0 \
# creiamo un menù di scelta
# il triplo 0 finale (altezza, larghezza, altezza menù) indica che la 
finestra
# viene dimensionata automaticamente
1 "Backup" \
2 "Avvia ambiente grafico" \
3 "Esci" 2> /tmp/menu.$$
# le opzioni selezionate vengono mostrate come standard error e 
redirette nel file
# temporaneo menu.$$ che in seguito viene eliminato
opt=`cat /tmp/menu.$$`
# il simbolo ` si ottiene premendo ALT+96 da tastiera in codice ascii
rm -rf /tmp/menu.$$
case $opt in
1) tar -cvzf /root/backup.tar.gz /home; read;;
2) startx;;
3) exit;;
esac
# per ogni voce di menù viene eseguito il comando indicato
# FINE SCRIPT #
Cosa c'è di sbagliato?
Ciao,
grazie.

 al caso mio; per fare una prova l'ho copiato pari pari ma mi da errore.
magari potresti dire quale errore...
comunque,dopo aver ripulito il codice da commenitini vari a me va
#!/bin/bash
dialog --menu "Menů di scelta" 0 0 0 \
1 "Backup" \
2 "Avvia ambiente grafico" \
3 "Esci" 2> /tmp/menu.$$
opt=`cat /tmp/menu.$$`


 magari potresti dire quale errore...
Hai ragione ... l'errore è:
bash: ./script: /bin/bash^M: bad interpreter: no such file or directory
Ciao,
grazie.

Togliendo completamente la prima riga, ho quest'altro messaggio:
: No such file or directory
Error: Expected at least 6 tokens for --menu, have 5.
Use --help to list options.
./script: line 3: 1: command not found
./script: line 4: 2: command not found
: command not found
cat: /tmp/menu.25361: No such file or directory
: command not found
'/script: line 10: syntax error near unexpected token `in
'/script: line 10: `case $opt in

 rm -rf /tmp/menu.$$
Non ho capito che ci azzecca l'opzione "-r" nel comando "rm"...
Ma non si riesce proprio a fare a meno del file temporaneo?

 Ma non si riesce proprio a fare a meno del file temporaneo?
Non lo so ma mi sembra che il problema sia a monte.
Ciao

 Non lo so ma mi sembra che il problema sia a monte.
Secondo me semplicemente copincolli male...
A me va.
Prova a mettere il comando dialog tutto su una riga (senza i backslash)

 Ma non si riesce proprio a fare a meno del file temporaneo?
guarda non ho mai usato dialog, pero' da una prima lettura del  man sembra
di no...
Some widgets, e.g., checklist, will write text to dialog's output.  Normally that is the standard error, but there  are  options  for
changing  this:  "--output-fd", "--stderr" and "--stdout".  No text is written if the Cancel button (or ESC) is pressed; dialog exits
immediately in that case.

> bash: ./script: /bin/bash^M: bad interpreter: no such file or directory
vedi quel ^M ? 
vuol dire che oil file di testo è formattato a cavolo
(cioè alla dos), quindi o editi a mano un nuovo file senza fare
cut+paste, o dai in pasto il tuo script a fromdos, che toglie i ^M (che
sono i "carriage return" del dos)

 Use --help to list options.
sempre il solito problema, anche qua hai un ^M che fa funzionare male il \
ciao

 bash: ./script: /bin/bash^M: bad interpreter: no such file or directory
$ cat script | tr '' '\n' > nuovoscript
$ ./nuovoscript
PS il primo carattere di tr lo devi fare tenendo premuto Ctrl e poi devi
   premere 'v' e 'm', poi lasci il tasto Ctrl.


 file temporaneo? 
Pare di no ma per lo meno usa un file temporaneo 
generato da mktemp.