Portál AbcLinuxu, 31. prosince 2025 07:16
if [ -f path/filename ] ; then echo "Našli rádcové, našli!" fiviz spousty skriptů, které máš určitě na systému
Pokud nemáš bash, tak doporučuji prohledat init skripty tvého systému, tam přece musí nějaký test na existenci souboru být ....
/usr/bin/[ alebo /bin/[. Iné meno pre ten istý príkaz je test. Ten if v predchádzajúcom príspevku vlastne testuje návratový kód externe spusteného príkazu. Pre ďalšie informácie viď man test.
test je obvykle na systému nainstalován včetně varianty [. A pokud nebude, tak init skripty začátečníka navedou jak to napsat na konkrétním stroji tak, aby to chodilo.
test (a '[') builtin.
ale nebudme zli, poradme mu
(teda vy, já vůbec nevím jak
)
if příkaz; then další příkaz fitohle bys našel v man bash, ale ten je dost obsáhlej a hledá se v něm blbě. hlavně bacha na ten středník. Výsledek příkazu se dá obrátit pomocí vykřičníku:
if ! příkaz; then (bacha na tu mezeru)-- Porovnání částí souboru v bashi in-place nejde (čti: neumim :) ), ale s trochou nápaditosti si poradíš i bez dočasných souborů. Jenže to by asi bylo dost podezřelý, takže naznačim řešení s dočasnym souborem:
tvrzení: v s1 jsou data v s1.head je 1-10. řádek z s1 v s1.mid je 30-40. řádek z s1důkaz: pomocí příkazu head (man head) si do nějakého dočasného souboru (třeba s1.tmp) uložíme prvních 10 řádků ze souboru s1:
head (něco) > s1.tmppotom pomocí příkazu diff zjistíme, zda jsou soubory s1.head a s1.tmp stejné (man diff):
diff (něco)(tady poradím, že příkaz diff vrací, mimo textového výstupu, i TRUE nebo FALSE, podobně jako příkaz test. TRUE je když jsou soubory stejné) testování souboru s1.mid provedeme obdobně, obsah souboru s1.tmp získáme kombinací příkazů head a tail (man tail)
head (něco) | tail (něco) > s1.tmp-- napiš, jak Ti to jde a cos vymyslel, opravíme, vymyslíme a odladíme ;) -m.
$? expanduje na návratovou hodnotu posledního provedeného příkazu. Mimochodem, máte pocit, že si ten zápočet opravdu zasloužíte?
ale jak mam output true/false z diff vypsat?přečti si tu mojí odpověď ještě jednou a pořádně... -m.
sed, awk, head + tail) do pomocných souborů (mktemp) a porovnat (cmp, diff).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.