Carsten skrev:
>> #!/bin/sh
>>
>> KATE="kate -u -l1"
>>
>> awk '$1 == "include" { print $2 }' "${1}" \
>> | tr -d \" \
>> | while read FILENAME
>> do
>> grep -q "${2}" "${FILENAME}" && {
>> ${KATE} "${FILENAME}" || :
>> }
>> done
>>
>> :
>> # eof
>
> Hej Jeg hader når jeg ikke forstår helt hvad der sker
Det kan man jo gøre noget ved.
> og specielt når der ikke sker noget
Det kan man osse gøre noget ved.
> jeg har fået denne linje til at virke
>
> awk '$1 == "include" { print $2 }' $1 | tr -d \"
>
> men resten ....
Du må være lidt mere specifik, hvis vi skal kunne hjælpe dig.
> Produktet af den første linje skal vel gemmes i nogle
> variabler til senere brug !!
Det er da muligt at det sidste "${2}" skulle have været i en variabel
fra starten af. Lad os se på detaljerne.
#v+
1 #!/bin/sh
2
3 KATE="kate -u -l1"
4
5 awk '$1 == "include" { print $2 }' "${1}" \
6 | tr -d \" \
7 | while read FILENAME
8 do
9 grep -q "${2}" "${FILENAME}" && {
10 ${KATE} "${FILENAME}" || :
11 }
12 done
13
14 :
#v-
Forklaring:
1 Jeg vil gerne bruge /bin/sh som shell
2 Tom linje
3 Variabel så jeg hurtigt kan ændre kates kommandolinje
4 En anden tom linje
5 Hvis første ord i filen er "include", så skriv andet ord
6 Fjern alle anførselstegn
7 Indlæs en linje ad gangen i variablen FILENAME
8 For hver linje, gør
9 Grep efter mønstret "${2}" i "${FILENAME}"
10 Hvis mønstret fandtes, så kør kate
11 Slut på blok startet i linje 9
12 Slut på gør-løkke
13 En tredje tom linje
14 Sæt scriptets exit-status til 0 (== succes)
Prøv evt. at ændre scriptet således:
#v+
#!/bin/sh
SOURCEFILE="${1}"
PATTERN="${2}"
KATE="kate -u -l1"
awk '$1 == "include" { print $2 }' "${SOURCEFILE}" \
| tr -d \" \
| while read FILENAME
do
grep -q "${PATTERN}" "${FILENAME}" && {
${KATE} "${FILENAME}" || :
}
done
:
#v-
Du ku' osse prøve at sætte KATE="echo", så det formodede filnavn
til kate blot blive skrevet i en CLI.
Hvad er det præcis for et ord eller mønster du gerne vil finde?
Er der evt. nogle tegn i som grep eller shell'en laver om undervejs?
Har du prøvet at kalde scriptet manuelt med '' omkring de to argumenter:
$ mitscript 'filnavn' 'finddetteord'
?
Mvh,
--
Klaus Alexander Seistrup
http://klaus.seistrup.dk/