Portál AbcLinuxu, 2. listopadu 2025 23:16
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.