$ if [[ 1.1.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
jo
$ if [[ 1.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
rossz
$ if [[ 11.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
rossz
$ if [[ 111.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
jo
$ if [[ 1.1.1. =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
rossz
$ if [[ 111.1.1. =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
rossz
$ bash -version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
- 861 megtekintés
Hozzászólások
És mi a kérdés?
4 db, maximum 3 jegyű számra kersed az illeszkedést, köztük pontnak kell lennie. Ez az elsőnél teljesül, a többinél nem. Vagy én nem értek valamit.
tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
ezt nem értem:
$ if [[ 111.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
jo
- A hozzászóláshoz be kell jelentkezni
nalam rossz, es az utolso sorban nalad is
--
Az emberek azt állítják, hogy múlik az idő, az idő viszont csak mosolyog, mert látja, hogy az emberek múlnak. - tibeti közmondás
- A hozzászóláshoz be kell jelentkezni
shell ver?
utolsóban raktam utána pontot.
- A hozzászóláshoz be kell jelentkezni
ok, a pont jogos
szerk:
ubuntu, frissen upgrade-elve:
nyos@hex:~$ bash -version
GNU bash, version 4.2.10(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
nyos@hex:~$ if [[ 111.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
rossz
Androidon chrootban futo ARM-os Debian:
/data/sdext2/data/minilinux # chroot . bash
root@localhost:/# bash -version
GNU bash, version 4.1.5(1)-release (arm-unknown-linux-gnueabi)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
root@localhost:/# if [[ 111.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
rossz
root@localhost:/# cat /etc/issue
Debian GNU/Linux 6.0 \n \l
worksforme
--
Az emberek azt állítják, hogy múlik az idő, az idő viszont csak mosolyog, mert látja, hogy az emberek múlnak. - tibeti közmondás
- A hozzászóláshoz be kell jelentkezni
Nálam helyesen rossz.
[locsemege@locsemege_gepe ~]$ if [[ 111.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
rossz
[locsemege@locsemege_gepe ~]$ bash --version
GNU bash, version 4.2.10(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Megvan. Rakd aposztrofok közé a regexp-et. Kipróbáltam, visszabutítottam a shell-emet így:
shopt -s compat31
Erre úgy viselkedett, mint nálad. Aztán elzártam a shell elől a regexp-et, erre megjavult. A másik lehetőség, hogy frissíted az oprendszert. Az a gyanúm, Fedorát, Red Hat-et, CentOS-t, Scientific-et használsz. Fedorán újabb a bash már, a többin lehet, hogy régebbi van még.
tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
[redhat 4.4 ~]$ if [[ 111.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
jo
[redhat 4.4 ~]$bash --version
GNU bash, version 3.00.15(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2004 Free Software Foundation, Inc.
[redhat 5.3 ~]$ if [[ 111.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
jo
[redhat 5.3 ~]$bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
[redhat 5.7 ~]$if [[ 111.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
jo
[redhat 5.7 ~]$bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
[centos 5.5 ~]$ if [[ 111.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
jo
[centos 5.5 ~]$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
- A hozzászóláshoz be kell jelentkezni
Ugyanakkor:
[locsemege@locsemege_gepe ~]$ if [[ 111.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
jo
[locsemege@locsemege_gepe ~]$ if [[ 111.1.1 =~ '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' ]]; then echo jo ; else echo rossz ; fi
rossz
[locsemege@locsemege_gepe ~]$ if [[ 111.1.1.1 =~ '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' ]]; then echo jo ; else echo rossz ; fi
jo
Tehát aposztrof kell. Az új shellben viszont éppen, hogy nem szabad használni az aposztrofot ebben a helyzetben. A kompatibilitás miatt vannak ezek a compat31, compat32, stb. shell opciók.
tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
nem szabad használni az aposztrofot ebben a helyzetben
bash-ban?? ejj, milyen idõket élünk!
- A hozzászóláshoz be kell jelentkezni
compat31 If set, bash changes its behavior to that of version 3.1 with respect to quoted arguments to the [[ conditional command's =~ operator.
Ebből arra következtetek, hogy az újabb, például 4.2.10-es verzió nem méltányolja az aposztrofokat itt, s valóban tapasztaltam, amikor nem működött egy scriptem, s kitéptem a maradék hajam miatta.
tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
minden fentebb irt platformra ugyan az (jo, rossz, jo)
a 2.03 as bash meg dob ra egy szep syntaxis hibat
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Tényleg. Jaj, de buta. Brace expansion-nek nézi.
tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni