Portál AbcLinuxu, 5. května 2025 16:48
Ahoj,
mám script co bere řádek po řádku,nějak ho zpracuje a s kolegou jsme dodali filtr co by měl odstranit prázdné řádky a prázdný ukončovací znak na konci.
Ale píše nám to chybu ambiguous redirect
Výsek ze scriptu (poslední řádka
done < $(cat DBtest.txt | grep -v "^$" | grep -v "^[ ]*$") ambiguous redirect
Celý script
#!/bin/bash
while read line do
TĚLO SCRIPTU CO PRACUJE S ŔÁDKY
done < $(cat DBtest.txt | grep -v "^$" | grep -v "^[ ]*$")
a) dá se filtr nějak upravit
b) Je nějaké lepší řešení ?
Díky
Jura
Řešení dotazu:
cat... | while readLepší řešení by bylo provést celou tu věc, kterou děláš v while read... nějakou rourou, lze-li to. Jinak prázdný řádek vyhovuje regulárnímu výrazu
^[ ]*$
taky, takže první grep je zbytečný a stačí
<DBtest.txt grep -v '^[ ]*$' | while read ...
while read ...
done < <(grep -v '^ *$' DBtest.txt)
nebo
while read ...
done <<< "$(grep -v '^ *$' DBtest.txt)"
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.