Portál AbcLinuxu, 13. července 2025 04:50
if [ -a /etc/*-release ];then
printf "OS:\n\t`cat /etc/*-release`\n"
fi
Na vetsine serveru mi to funguje bez problemu, ale kdyz skusim skript spustit na stroji s fedorou narazim na problem:
ls /etc/*-release
/etc/fedora-release /etc/redhat-release
Soubory ktere konci na -release jsou dva a bash vyhodi chybu:
/usr/local/bin/hwi.sh: line 20: [: /etc/fedora-release: binary operator expected
Jak bych mel podminku upravit, aby skript fungoval?
Diky za nakopnuti.
hwi.sh
znamená „hardware info“? Nestačilo by místo parsování souborů v /etc
něco z uname
?zoul@naima:~$ for sw in m n p s r; do echo "-$sw `uname -$sw`"; done -m Power Macintosh -n naima -p powerpc -s Darwin -r 8.10.0 zoul@naima:~$…čili třeba to
uname -r
?
server var # cat /etc/gentoo-release
Gentoo Base System version 1.12.7
server var #
Uname pouzivam taky.
ls /etc/*-release &> /dev/null && cokoliv
. Není to vrchol elegance, ale funguje to :)
ls /etc/*-release >/dev/null 2>/dev/null if [ $? -eq 0 ]; then ... fi
$?
je zbytečné, není?
zoul@naima:~$ if true; then echo pravda; fi pravda zoul@naima:~$ if false; then echo pravda; fi zoul@naima:~$A když chce člověk přesměrovat
stdout
i stderr
na stejné místo, může zrovna psát &>
.
#!/usr/bin/python import glob for fn in glob.glob('/etc/*-release'): print file(fn).read()
for i in /etc/*-release; do if [ -a "$i" ]; then printf "OS:\n\t`cat $i`\n" fi done
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.