Arntfinn Skrevet 25. februar 2003 Del Skrevet 25. februar 2003 hei, jeg har et lite problem med no bash scripting: [[ -r ./dirs.lst ]] && LINES=$(echo $(wc -l < ./dirs.lst)) { i=1 a=1 while [ "$i" -le $LINES ] do read line$i let "i+=1" done } < ./dirs.lst while [ "$a" -le $LINES ] do echo $lines$a let "a+=1" done har mase linjer i en fil (skal være mappene i mappa når det blir ferdig), og så vil jeg at hver linje i fila skal ha en egen variabel, som heter line + nr på linja. dette går helt greit. problemet oppstår i den siste while loopen. je g får ikke printa ut variablene som en variabel variabel, hvis dere skjønner. ($line1, $line2 etc fungerer) ("echo" er bare midlertidig, til jeg får det til å funke, så dra en "cat fil" hjelper ikke) -arntfinn Lenke til kommentar
iDude Skrevet 26. februar 2003 Del Skrevet 26. februar 2003 hei, jeg har et lite problem med no bash scripting: .... .... while [ "$a" -le $LINES ] do echo $lines$a let "a+=1" done -arntfinn Hei, håper jeg har skjønt deg rett ... Kanskje det fungerer om du bruker refvar="line$a" echo ${!refvar} i stedet for echo $lines$a Sistnevnte viser vel kun "$a" fordi du egentlig ikke har definert variabelen "lines", mens førstnevnte skal vise til innholdet i variabelen med navnet "line$a"... Men hvorfor bruker du ikke arrays? Det blir litt enklere (og mer intuitivt) da... Lenke til kommentar
Arntfinn Skrevet 27. februar 2003 Forfatter Del Skrevet 27. februar 2003 takk for hjelpa jeg skulle egentlig ikke bruke bash, men jeg fikk no problemer, så jeg måtte ta det jeg hadde. fant en liten typo på koden jeg hadde skrevet, men det hadde ikke funka fordet. jeg skal se litt på arrays i kveld Lenke til kommentar
Arntfinn Skrevet 27. februar 2003 Forfatter Del Skrevet 27. februar 2003 sånn, disse arraysene var jo geniale altfor lenge siden jeg har drevet med slikt. gamle kunnskaper kommer frem igjen.. ok, nok babbel #!/bin/bash ls --color=none > dirs.lst [[ -r dirs.lst ]] && LINES=$(echo $(wc -l < dirs.lst)) rm dirs.lst dirs=( $(ls --color=none) ) i=0 while [ "$i" -le $LINES ]; do if [ "${dirs[$i]}" != "" -a -d "${dirs[$i]}" ]; then echo ${dirs[$i]}; fi let "i+=1" done exit 0 har du no annen smart jeg kan bytte ut her.. f.eks finne hvor mange ting det er i .? takk for hjelp nok en gang, dette var mye smartere og penere enn det andre mølet jeg skreiv edit: når jeg ser på posten her, så ser det ut som jeg har gjor detta med "ls" to ganger, som egentlig er unødvendig.. men jeg får fikse det etter middag og stil hehe Lenke til kommentar
burre Skrevet 27. februar 2003 Del Skrevet 27. februar 2003 Er ikke sikker på hva du vil men jeg bruker en quick and dirty i=1 for a in `cat fil`; do lines$1=$a let "i+=1" done Lenke til kommentar
iDude Skrevet 3. mars 2003 Del Skrevet 3. mars 2003 har du no annen smart jeg kan bytte ut her.. f.eks finne hvor mange ting det er i .? To tips: Følgende gir deg KUN katalogene i den katalogen du står i: find -type d -maxdepth 1 -print som du kan bytte ut "ls" kommandoen med (Her fins det sikkert bedre metoder, men denne funker). Ellers gir følgende deg antall elementer i arrayet "dir" ${#dir[*]} Men nå begynner det å grense til flisespikkeri :wink: Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå