
Så här ser den delen av koden ut:
Kod: Markera allt
for file in ./themes/*; do
echo $i "$file" | sed -e 's/.\/themes\///g'
theme[$i]="$file"
done
Kod: Markera allt
for file in ./themes/*; do
echo $i "$file" | sed -e 's/.\/themes\///g'
theme[$i]="$file"
done
Kod: Markera allt
i=0
for file in ./themes/*; do
echo $i "$file" | sed -e 's/.\/themes\///g'
theme[$i]="$file"
i=$((i+1))
done
"flaggorna" dyker upp bland de andra argumenten som $1, $2, $3, osv.AntonPetts skrev:Någon som vet hur man lägger till flaggor i ett skript?
Kod: Markera allt
while getopts ab: OPT
do case $OPT in \?)
;; a) echo flaggan -a hittad
;; b) echo flaggan -b hittad med argument: "$OPTARG"
esac
done
tror du att du kan förklara det där lite mer? Jag lyckades inte lägga till fler flaggorKonservburk skrev:Kod: Markera allt
while getopts ab: OPT do case $OPT in \?) ;; a) echo flaggan -a hittad ;; b) echo flaggan -b hittad med argument: "$OPTARG" esac done
Kod: Markera allt
while getopts ab:c:d OPT
do case $OPT in \?)
;; a) echo flaggan -a hittad
;; b) echo flaggan -b hittad med argument: "$OPTARG"
;; c) echo flaggan -c hittad med argument: "$OPTARG"
;; d) echo flaggan -d hittad
esac
done
Tyvärr inte, man hittar inget heller (jag kör inte ubuntu)Konservburk skrev:help getopts ger dig en fullständig förklaring
Sök efter getopts i man bash så borde du hitta detAntonPetts skrev:Tyvärr inte, man hittar inget heller (jag kör inte ubuntu)Konservburk skrev:help getopts ger dig en fullständig förklaring
Kod: Markera allt
getopts optstring name [args]
getopts is used by shell procedures to parse positional parame-
ters. optstring contains the option characters to be recog-
nized; if a character is followed by a colon, the option is
expected to have an argument, which should be separated from it
by white space. The colon and question mark characters may not
be used as option characters. Each time it is invoked, getopts
places the next option in the shell variable name, initializing
name if it does not exist, and the index of the next argument to
be processed into the variable OPTIND. OPTIND is initialized to
1 each time the shell or a shell script is invoked. When an
option requires an argument, getopts places that argument into
the variable OPTARG. The shell does not reset OPTIND automati-
cally; it must be manually reset between multiple calls to
getopts within the same shell invocation if a new set of parame-
ters is to be used.
When the end of options is encountered, getopts exits with a
return value greater than zero. OPTIND is set to the index of
the first non-option argument, and name is set to ?.
getopts normally parses the positional parameters, but if more
arguments are given in args, getopts parses those instead.
getopts can report errors in two ways. If the first character
of optstring is a colon, silent error reporting is used. In
normal operation diagnostic messages are printed when invalid
options or missing option arguments are encountered. If the
variable OPTERR is set to 0, no error messages will be dis-
played, even if the first character of optstring is not a colon.
If an invalid option is seen, getopts places ? into name and, if
not silent, prints an error message and unsets OPTARG. If
getopts is silent, the option character found is placed in
OPTARG and no diagnostic message is printed.
If a required argument is not found, and getopts is not silent,
a question mark (?) is placed in name, OPTARG is unset, and a
diagnostic message is printed. If getopts is silent, then a
colon (:) is placed in name and OPTARG is set to the option
character found.
getopts returns true if an option, specified or unspecified, is
found. It returns false if the end of options is encountered or
an error occurs.
ok, tack för hjälpenKonservburk skrev:Sök efter getopts i man bash så borde du hitta detAntonPetts skrev:Tyvärr inte, man hittar inget heller (jag kör inte ubuntu)Konservburk skrev:help getopts ger dig en fullständig förklaring![]()
Vad har du för kass tidsinställning egentligen?AntonPetts skrev:Om någon vill kolla på skriptet som det ser ut nu: länk
Kod: Markera allt
$ tar -xvjf 95383-smiley-generator-v0.3.tar.bz2
smiley-generator/
smiley-generator/smiley-generator.sh
tar: smiley-generator/smiley-generator.sh: time stamp 2008-12-21 19:08:59 is 335.925613166 s in the future
smiley-generator/themes/
smiley-generator/themes/modern
smiley-generator/themes/standard
tar: smiley-generator: time stamp 2008-12-21 19:16:44 is 800.924252035 s in the future
XDKonservburk skrev:[Vad har du för kass tidsinställning egentligen?
ok, det hade jag ingen aning om, tackKonservburk skrev: Jag kollade lite snabbt på skriptet, och det första jag lägger märke till är att du kör med #!/bin/sh trots att du använder syntax som inte stöds av t.ex. den version av sh som följer med ubuntu.
Du bör byta ut det till #!/bin/bash eller ändra koden så att den faktiskt blir sh-portabel.
Kod: Markera allt
variabel = början till $variabel2 i $fil
Kod: Markera allt
$ VAR=potatisskalare
$ echo ${VAR%are}
potatisskal
Kod: Markera allt
$ echo ${VAR%a*}
potatisskal
Kod: Markera allt
$ echo ${VAR%%a*}
pot
Kod: Markera allt
$ echo ${VAR#*s}
skalare
Nä.Konservburk skrev: Det går t.ex. alldeles utmärkt att använda "${FIL##*/}" istället för `basename "$FIL"` och på motsvarande sätt "${FIL%/*}" istället för `dirname "$FIL"`.
Kod: Markera allt
ls "$FIL"
DIR=`dirname "$FIL"`
BASE=`basename "$FIL"`
ls "$DIR/$BASE"
Kod: Markera allt
ls "$FIL"
DIR=${FIL%/*}
BASE=${FIL##*/}
ls "$DIR/$BASE"
Nu var det där mest tänkt som ett exempel på hur ${VAR#pattern} och ${VAR%pattern} fungerarDavid Andersson skrev:Nä.Konservburk skrev: Det går t.ex. alldeles utmärkt att använda "${FIL##*/}" istället för `basename "$FIL"` och på motsvarande sätt "${FIL%/*}" istället för `dirname "$FIL"`.
Kod: Markera allt
FIL="${FIL%${FIL#/}}.${FIL:+/}${FIL%${FIL##*[^/]}}"
Kod: Markera allt
echo ${prevar%$color} >> "./${name}${tpostfix}/${name}"
Svårt att svara på utan att veta vad alla variablerna har för värden.AntonPetts skrev:vad är felet?Kod: Markera allt
echo ${prevar%$color} >> "./${name}${tpostfix}/${name}"
$prevar = massa xml-kodKonservburk skrev:Svårt att svara på utan att veta vad alla variablerna har för värden.AntonPetts skrev:vad är felet?Kod: Markera allt
echo ${prevar%$color} >> "./${name}${tpostfix}/${name}"
Kod: Markera allt
echo "pre='${prevar%1;fill:#$color}'" >> "./${name}${tpostfix}/${name}"
Det kan jag knappast tänka mig. Är ffd600 verkligen det absolut sista i $prevar?AntonPetts skrev:Den skriver alltså ut hela $prevar, och inte bara fram till ffd600. Måste väl bero på något tecken i xml:en? hur ska jag escapa det?
Jaha, nu fattar jag!Konservburk skrev:Det kan jag knappast tänka mig. Är ffd600 verkligen det absolut sista i $prevar?AntonPetts skrev:Den skriver alltså ut hela $prevar, och inte bara fram till ffd600. Måste väl bero på något tecken i xml:en? hur ska jag escapa det?