$ echo "x=21; case $x in +([0-9])) echo "x is an integer";; esac" >>
hai aperto " per inserire la stringa che deve essere spedito al file, ma lo
hai chiuso in anticipo."x is an integer" risulta essere un programma e
hai ragione per meta'
l'errore di non aver "escapizzato" le virgolette c
On Tue, 3 Feb 2009 13:43:53 +0100, gollum1 wrote:
> echo "x=21; case $x in +([0-9])) echo /"x is an integer/";; esac" >> test.sh
^^
L'escaping si fa con \...
David
--
. ''`. Debian maintainer | http://wiki.debian.org/DavidPaleino
: :'
Il martedì 3 febbraio 2009 08:58:11 Flavio ha scritto:
> sto scrivendo uno script in bash, ed ho trovato uno stranissimo
> comportamento (bug??):
>
> $ echo $SHELL
> /bin/bash
> $ x=21; case $x in +([0-9])) echo "x is an integer";; esac
> x is an integer
> $ echo "x=21; case $x in +([0-9])) echo "x
On Tuesday 03 February 2009 11:29:42 Antonio Macchi wrote:
> perche' metti quelle parentesi tra [0-9]?
> cosa volevi testare di preciso?
il test dovrebbe fare il match per una o più cifre, in pratica un numero
intero.
La sintassi è presa da man bash, dove dice che il pattern di un case viene
sot
perche' metti quelle parentesi tra [0-9]?
cosa volevi testare di preciso?
se vuoi che la variabile contenga solo numeri e al massimo un +
all'inizio, potresti usare una espressione regolare...
$ a=21; [[ $a =~ "^\+?[0-9]+$" ]] && echo "x e' un intero positivo"
...o al limite un case combin
sto scrivendo uno script in bash, ed ho trovato uno stranissimo comportamento
(bug??):
$ echo $SHELL
/bin/bash
$ x=21; case $x in +([0-9])) echo "x is an integer";; esac
x is an integer
$ echo "x=21; case $x in +([0-9])) echo "x is an integer";; esac" >> test.sh
$ /bin/bash test.sh
test.sh: line
6 matches
Mail list logo