Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Michal Švarc 23. 01. 2022, 20:25:22
-
vyduckoval jsem si příkaz a celý šťastný ho přidal do scriptu
vstupsoub='stáhnout_čína.txt'
vstupsoubB=${vstupsoub:0:(-4)}
readarray -d _ -t vstupSouborAr<<<"$vstupsoubB"
for word in "${vstupSouborAr[@]}"; do
echo -e "'${word}'"
done
výsledkem je toto:
'stáhnout'
'čína
'
co by mne zajímalo je, jak se do druhé (nebo možná poslední?) položky pole dostane ten nový řádek (před převodem - řádek s readarray - je to ok)
případně alespoň nějaký tip, kde bych mohl hledat, jak to má vlastně fungovat - manuálovou stránku to nemá a v manuálu bashe se o tom nepíše (nebo jsem slepej ;) )
-
vstupsoub='stáhnout_čína.txt'
vstupsoubB=${vstupsoub%.txt}
mapfile -d '_' -t vstupSouborAr < <(echo "${vstupsoubB}" | tr -d '\n')
for word in "${vstupSouborAr[@]}"; do
echo -e "'${word}'"
done
1. misto "readarray" pouzit "mapfile" (je to to same, ale u mapfile najdes napovedu pres "help mapfile" (nejde o manualovou stranku ale napovedu interniho bash prikazu) ;-)
2. misto definovani vstupsoubB pres "odzacatku & odeber 4 znaku od konce", prehlednejsi "od konce odeber znaky .txt"
3. misto <<< vycteni z promnene, << ( vycteni z vystupu prikazu kde tr zajistuje odebrani znaku noveho radku
nevim zda mi neco neunika, ale volba -t (u mapfile ci readarray) ktera ma v popisu "odstraneni znaku noveho radku" to NEdela pokud definujes pres -d jinej oddelovac nez vychozi znak konce radku, pak -t (coz take chces) odstranuje znak oddelovace, v tvem pripade _ z kazde prirazene promene...
-
...
opravdu děkuji :D
-
...
Jiná varianta, nevím zda to přesně odpovídá zadání:
vstupsoub='stáhnout_čína.txt'
IFS=_
set -- ${vstupsoub%.txt}
for x
do
echo "'$x'"
done
-
...
Přesně tomuhle způsobu převodu textu do pole (krz IFS), jsem se snažil od začátku vyhnout.
Když jsem našel odpověď, kterou jsem hledal, šlo mi o pochopení toho co dělám (včetně toho, jak se mi dostal konec řádku do položky pole) a materiály ze kterých by se to dalo vyčíst, protože se mi to v manuálech a na netu nedařilo najít.
Odpověď kterou jsem získal od k3dAR, byla v tomto ohledu naprosto úžasná ;)