Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Peterx 30 Srpna 2010, 11:32:03
-
Zdravim kazdeho, narazil som na mensi problem pri 1 skripte a to takyto:
cat rn.txt | grep H$hour | cut -d ';' -f2 - mi vrati to co potrebujem a vykonaju sa vsetky prikazi
rn1=$(cat rn.txt | grep H$hour | cut -d ';' -f2) - toto sa chova tak ze sa mi nevykona prikaz grep.
Viete niekto cim to je?
Skript:
#! /bin/bash
rn ()
{
date="/bin/date"
hour=$(${date} "+%H")
}
rn1=$(cat rn.txt | grep H$hour | cut -d ';' -f2)
rn2=$(cat rn.txt | grep H$hour | cut -d ';' -f3)
rn
echo $rn1
echo $rn2
echo $hour
cat rn.txt | grep H$hour | cut -d ';' -f2
rn.txt:
H00;1200;900
H01;3600;3590
H02;3600;3590
H03;3600;3590
H04;2600;1590
H05;1000;600
H06;170;90
H07;130;45
H08;60;25
H09;42;16
H10;35;12
H11;30;9
H12;25;5
H13;30;8
H14;40;12
H15;50;15
H16;60;18
H17;70;22
H18;80;27
H19;90;30
H20;100;38
H21;200;95
H22;250;110
H23;300;150
-
Problém bude s proměnou v subshellu.
Mě funguje obojí (po letmém zkoušení).
grep rozhodně doporučuji upravit na:
grep "H${hour}"
Jdu dál zkoušet pár věcí.
EDIT: Aha, koukal jsem jen na tu konstrukci. Chyba je jinde. Používáš $hour dříve než jí definuješ, jelikož funkci rn vykonáváš až později. S funkcemi jsem v bashy nikdy moc nepracoval, čili detaily nevím.
-
Dik za odpoved, asi mi to dnes nemysli ;D