Portál AbcLinuxu, 12. května 2025 07:53
[[ ${vstup} =~ "^[+-]?[0-9]+$" ]] && echo "$vstup je cislo" || echo "$vstup neni cislo"Vůbec to ošetření vstupu ,zda je číslo...
if [ "$value" -gt "0" -a "$value" -lt "23" ] || [ "$value" = "*" ]; then,tohle mi funguje, ale v připadě stringu to sice vyhodnotí správně, ale vyhodí to chybu ilegall number.. co stím?Díky
if [ "$value" = "*" ] || [ "$value" -gt "0" -a "$value" -lt "23" ];then ...
Tohle v Bashi funguje bez problémů...
[: 25: Illegal number:
if [[ ${vstup} =~ "^[+-]?[0-9*]+$" ]];then if [ "$value" = "*" ] || [ "$value" -gt "0" -a "$value" -lt "23" ];then echo "Vstup OK" fi;Ale myslím, že níže vám někdo nabídne lepší řešení...
Případně rovnou
if [ "$value" = "*" -o "$value" -gt "0" -a "$value" -lt "23" ]; then
[[ ]]
fungují.
bash$ value=* bash$ echo "$value" * bash$ if [ "$value" = "*" -o "$value" -gt "0" -a "$value" -lt "23" ]; then echo ok; fi bash: [: *: integer expression expected bash$ if [[ "$value" = "*" || "$value" -gt "0" || "$value" -lt "23" ]]; then echo ok; fi bash$ ok bash$ if [ "$value" = "*" ]; then echo ok; elif [ "$value" -gt "0" -a "$value" -lt "23" ]; then echo ok; fi; ok
if [ "$value" = '*' ] || [ "$value" -gt "0" -a "$value" -lt "23" ];then ...
[user@srv ~]$ if [[ 2443 =~ ^[0-9]+$ ]]; then echo OK; else echo NO; fi
OK
[user@srv ~]$ if [[ 2A443 =~ ^[0-9]+$ ]]; then echo OK; else echo NO; fi
NO
if [[ 2443 =~ ^[+-]?[0-9]+$ ]]; then echo OK; else echo NO; fi
[user@srv ~]$ bash -version
GNU bash, version 3.00.15(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2004 Free Software Foundation, Inc.
[user@srv ~]$ if [[ 2443 =~ "^[+-]?[0-9]+$" ]]; then echo OK; else echo NO; fi
OK
[user@srv ~]$ if [[ 24A43 =~ "^[+-]?[0-9]+$" ]]; then echo OK; else echo NO; fi
NO
dave@amd64 ~ $ if [[ 2443 =~ ^[0-9]+$ ]]; then echo OK; else echo NO; fi OK dave@amd64 ~ $ if [[ 2443 =~ "^[0-9]+$" ]]; then echo OK; else echo NO; fi NO dave@amd64 ~ $ bash --version GNU bash, verze 4.2.10(2)-release (x86_64-unknown-linux-gnu) Copyright (C) 2011 Free Software Foundation, Inc. Licence GPLv3+: GNU GPL verze 3 nebo novější <http://gnu.org/licenses/gpl.html> Toto je svobodné programové vybavení: máte právo jej měnit a šířit. VEŠKERÉ ZÁRUKY chybí, jak jen zákon dovoluje.Myslím, že se to podělalo ve verzi 3.1 nebo 3.2.
GNU bash, verze 4.1.5(1)-release (x86_64-pc-linux-gnu) Copyright © 2009 Free Software Foundation, Inc. Licence GPLv3+: GNU GPL verze 3 nebo novější http://gnu.org/licenses/gpl.html Toto je svobodné programové vybavení: máte právo jej měnit a šířit. VEŠKERÉ ZÁRUKY chybí, jak jen zákon dovoluje.
dave@amd64 /tmp $ if [[ 2443 =~ ^[0-9]+$ ]]; then echo OK; else echo NO; fi OK dave@amd64 /tmp $ echo 'if [[ 2443 =~ ^[0-9]+$ ]]; then echo OK; else echo NO; fi' > x dave@amd64 /tmp $ bash x OK
read value if [[ $value =~ ^[0-9]+$ ]]; then echo true else echo false fi19: [[: not found
#!/bin/bash
, přidejte mu právo ke spuštění (chmod +x skript
) a spusťte jej (./skript
).
kleptor@aine:/tmp$ value=666 kleptor@aine:/tmp$ expr 1 + $value &> /dev/null && echo "je cislo" || echo "neni cislo" je cislo kleptor@aine:/tmp$ value=blabla kleptor@aine:/tmp$ expr 1 + $value &> /dev/null && echo "je cislo" || echo "neni cislo" neni cislo
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.