Ik leer elke dag weer een beetje bij op Linux/Debian/Raspbian gebied met mijn Raspberry Pi's en veel ontdek en leer ik wel door goed te zoeken op Google.
Ik ben nu bezig met mijn bash shell script te verfijnen om eenvoudig timelapses te kunnen maken.
Dialog vind ik tot nu toe het prettigste om daar voor te gebruiken hoewel het wel lastig is om input af te vangen. Die input afvangen doe ik via tijdelijk weggeschreven bestanden die ook direct weer verwijderd worden.
1 ding loop ik nu nogal op vast: de input van checklists uitlezen. Misschien is het wel erg basic op vast loop, maar ik zie door de bomen het bos niet meer.
Stel ik heb 5 regels in de checklist met de simpele namen:
[ ] Line 1 Choose this to use line 1
[ ] Line 2 Choose this to use line 2
[ ] Line 3 Choose this to use line 3
[ ] Line 4 Choose this to use line 4
[ ] Line 5 Choose this to use line 5
En ik die daar van alleen de bovenste 3 regels dan wordt er dit weggeschreven in een bestand (bijvoorbeeld file.txt):
Nu wil ik graag die 3 teksten in losse variabelen kunnen gebruiken om vergelijkingen mee te maken in mijn script en afhankelijk daar van acties uitvoeren.
Tot nu toe worden de arrays zodanig opgebouwd dat als ik ze uitlees een rijtje krijg als:
Terwijl ik het wil kunnen uitlezen als testarray[0] met "Line 1", testarray[1] met "Line 2" en testarray[2] met "Line 3" (uiteraard zonder quotes).
Ik kan natuurlijk overwegen om zonder spaties in de teksten te werken, maar ik wil ook graag weten of en hoe het kan inclusief de spaties.
De bronnen die ik tot nu toe geraadpleegd heb:
Dus is er een manier om de complete teksten tussen quotes inclusief spaties in een array te krijgen of kan ik beter overstappen naar andere benamingen die geen spatie bevatten?
Ik ben nu bezig met mijn bash shell script te verfijnen om eenvoudig timelapses te kunnen maken.
Dialog vind ik tot nu toe het prettigste om daar voor te gebruiken hoewel het wel lastig is om input af te vangen. Die input afvangen doe ik via tijdelijk weggeschreven bestanden die ook direct weer verwijderd worden.
1 ding loop ik nu nogal op vast: de input van checklists uitlezen. Misschien is het wel erg basic op vast loop, maar ik zie door de bomen het bos niet meer.
Stel ik heb 5 regels in de checklist met de simpele namen:
[ ] Line 1 Choose this to use line 1
[ ] Line 2 Choose this to use line 2
[ ] Line 3 Choose this to use line 3
[ ] Line 4 Choose this to use line 4
[ ] Line 5 Choose this to use line 5
En ik die daar van alleen de bovenste 3 regels dan wordt er dit weggeschreven in een bestand (bijvoorbeeld file.txt):
code:
1
| "Line 1" "Line 2" "Line 3" |
Nu wil ik graag die 3 teksten in losse variabelen kunnen gebruiken om vergelijkingen mee te maken in mijn script en afhankelijk daar van acties uitvoeren.
Tot nu toe worden de arrays zodanig opgebouwd dat als ik ze uitlees een rijtje krijg als:
code:
1
2
3
4
5
6
| "Line 1" "Line 2" "Line 3" |
Terwijl ik het wil kunnen uitlezen als testarray[0] met "Line 1", testarray[1] met "Line 2" en testarray[2] met "Line 3" (uiteraard zonder quotes).
Ik kan natuurlijk overwegen om zonder spaties in de teksten te werken, maar ik wil ook graag weten of en hoe het kan inclusief de spaties.
De bronnen die ik tot nu toe geraadpleegd heb:
- http://www.thegeekstuff.com/2010/06/bash-array-tutorial/
Deze vond ik erg leerzaam om de notering van arrays te snappen. - http://unix.stackexchange...m-the-output-of-a-command
Met grep en sed leverde mij dit alleen maar op dat de quotes er uit gefilterd werden (dit was ook de bedoeling), maar nog steeds wordt op basis van de spatie gescheiden. - http://www.cyberciti.biz/faq/bash-scripting-using-awk/
AWK leverde mij nog steeds gescheiden teksten op.
- [bash] multidimensioneel array vullen vanuit file
De input wijkt te veel af van mijn input. - Soort explode voor bash
Hier werd ik op het idee voor het gebruik van awk gebracht, maar kwam ik dus ook niet veel verder mee
Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| #!/bin/bash #testarray=`cat file.txt` #echo -e "$testarray" #declare -a testarray=($(grep -o '".*"' file.txt | sed 's/"//g')) declare -a testarray=($(cat file.txt)); #declare -a testarray=(cat file.txt); echo -e "Contents of array:" echo -e ${testarray[@]} echo -e " " echo "Length of array:" echo -e ${#testarray[@]} echo " " echo "Array loop:" n=0; for item in "${testarray[@]}"; do let n=n+1; echo "$n: $item"; done echo -e "== AWK test =="; testarray2=`awk /".*"/ file.txt` echo -e "${testarray[@]}"; echo "First array item: ${testarray[0]}"; |
Dus is er een manier om de complete teksten tussen quotes inclusief spaties in een array te krijgen of kan ik beter overstappen naar andere benamingen die geen spatie bevatten?