melz Skrevet 24. oktober 2008 Del Skrevet 24. oktober 2008 (endret) Hei. Har en oppgave som jeg sliter litt med. Jeg skal lage et skript som heter slettemp som flytter ordinære filer i argumentlisten til mappen ~/.slettet. Eks: Setningen under skal flytte fil1 og alle filer som begynner på bokstaven a til mappen ~/.slettet: slettemp fil1 a* Dette er koden jeg har så langt: #!/bin/bash antArg=1 while [ $antArg -le $# ] do mv -f '$'"${antArg}" ~/.slettemp antArg=$((antArg+1)) done Dette er outputten jeg får når jeg prøver å kjøre dette skriptet. mv: cannot stat `$1': No such file or directory mv: cannot stat `$2': No such file or directory Sånn som jeg har tenkt det er at det er en while løkke som tar først $1, så $2 osv. Det jeg ikke får til er at skriptet flytter verdien til argumentene. Jeg tror programmet prøver å flytte en fil som heter $1 og $2 i dette tilfellet. Noen tips til hva jeg gjør feil? Takker for svar. Mvh Gerhard Endret 28. oktober 2008 av melz Lenke til kommentar
zotbar1234 Skrevet 25. oktober 2008 Del Skrevet 25. oktober 2008 Dette er koden jeg har så langt: #!/bin/bash antArg=1 while [ $antArg -le $# ] do mv -f '$'"${antArg}" ~/.slettemp antArg=$((antArg+1)) done Eh... hva skal '$' etterfulgt av "${antArg}" forestille? Hvis du tenker på "neste" argument, mener du da ${BASH_ARGV[$antArg]}? Dette er outputten jeg får når jeg prøver å kjøre dette skriptet. mv: cannot stat `$1': No such file or directory mv: cannot stat `$2': No such file or directory Sånn som jeg har tenkt det er at det er en while løkke som tar først $1, så $2 osv. Hvorfor ikke bare mv -i $@ ~/.slettetmp ? Det jeg ikke får til er at skriptet flytter verdien til argumentene. Jeg tror programmet prøver å flytte en fil som heter $1 og $2 i dette tilfellet. Jepp. Det kan se ut som at du vil evaluere $antArg sette sammen med tegnet '$' og evaluere den teksten på nytt. Jeg er nokså usikker på om det overhodet går an. Lenke til kommentar
melz Skrevet 28. oktober 2008 Forfatter Del Skrevet 28. oktober 2008 Dette er koden jeg har så langt: #!/bin/bash antArg=1 while [ $antArg -le $# ] do mv -f '$'"${antArg}" ~/.slettemp antArg=$((antArg+1)) done Eh... hva skal '$' etterfulgt av "${antArg}" forestille? Hvis du tenker på "neste" argument, mener du da ${BASH_ARGV[$antArg]}? Dette er outputten jeg får når jeg prøver å kjøre dette skriptet. mv: cannot stat `$1': No such file or directory mv: cannot stat `$2': No such file or directory Sånn som jeg har tenkt det er at det er en while løkke som tar først $1, så $2 osv. Hvorfor ikke bare mv -i $@ ~/.slettetmp ? Det jeg ikke får til er at skriptet flytter verdien til argumentene. Jeg tror programmet prøver å flytte en fil som heter $1 og $2 i dette tilfellet. Jepp. Det kan se ut som at du vil evaluere $antArg sette sammen med tegnet '$' og evaluere den teksten på nytt. Jeg er nokså usikker på om det overhodet går an. Hei, og takk for svar. Sånn som jeg hadde tenkt det var en while løkke som tok $1, $2, $3 osv. Jeg kjente ikke til $@, men denne løste det meste for meg. mv -i $@ ~/.slettetmp er nok en bedre løsning tror jeg :-) Igjen, takk for hjelpen! Mvh Gerhard 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å