Hvorfor stopper dette script?
-
- Indlæg: 2667
- Tilmeldt: 21. nov 2006, 10:06
- Geografisk sted: Fredericia
Hvorfor stopper dette script?
Jeg har lavet et script til at installere alt det jeg normalt bruger. Men det stopper lige før det skal installere Virtualbox.
Er det fordi der mangler et "sudo -E" foran?
Behøver jeg at skrive "&&" efter hver kommando eller er et linieskift nok?
Scriptet
Er det fordi der mangler et "sudo -E" foran?
Behøver jeg at skrive "&&" efter hver kommando eller er et linieskift nok?
Scriptet
Kode: Vælg alt
#!/bin/bash
# aktivere de forskellige repositories
echo "deb http://archive.canonical.com/ubuntu/ $(lsb_release -cs) partner" > /etc/apt/sources.list
echo "deb http://archive.canonical.com/ubuntu/ $(lsb_release -cs)-updates partner" >> /etc/apt/sources.list
echo "deb http://dk.archive.ubuntu.com/ubuntu/ $(lsb_release -cs) multiverse" >> /etc/apt/sources.list
echo "deb http://dk.archive.ubuntu.com/ubuntu/ $(lsb_release -cs)-updates multiverse" >> /etc/apt/sources.list
echo "deb http://dk.archive.ubuntu.com/ubuntu/ $(lsb_release -cs) main restricted" >> /etc/apt/sources.list
echo "deb http://dk.archive.ubuntu.com/ubuntu/ $(lsb_release -cs)-updates main restricted" >> /etc/apt/sources.list
echo "deb http://dk.archive.ubuntu.com/ubuntu/ $(lsb_release -cs) universe" >> /etc/apt/sources.list
echo "deb http://dk.archive.ubuntu.com/ubuntu/ $(lsb_release -cs)-updates universe" >> /etc/apt/sources.list
#Aktivere medibuntu
#
#
#
sudo -E wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list && sudo apt-get --quiet update &&
sudo apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring &&
sudo apt-get --quiet update
#Installer flash - forskel på 64bit og 32bit udg.
#
#
#
if [[ `uname -m` == 'x86_64' ]];
then
sudo apt-get install -y flashplugin-installer;
else
sudo apt-get install -y adobe-flashplugin;
fi
# Installer plugins, java, drivers og diverse codecs
#
#
#
sudo apt-get install -y icedtea-plugin adobe-flashplugin non-free-codecs ubuntu-restricted-extras libdvdcss2 vlc-plugin-pulse mozilla-plugin-vlc totem-plugins-extra
# Installer diverse programmer
#
# Heruder indsættes andre programmer der skal installeres fra start, og som ikke kræver ekstra ppa'er
#
# Skype - samtale/cam client
# vlc - video afspiller
# audacity - audio editor/recorder
# gparted - partitionmanager
# sysinfo - System informationer
# rar, p7zip - vigtige pakkeprogrammer
# Gnome-system-tools -
# Users and groups
# Date and time
# Network configuration
# Runlevels
# Shared Folders through Samba or NFS
# geany - teksteditor
# inkscape - SVG editor
sudo apt-get install -y skype vlc audacity gparted sysinfo rar p7zip gnome-system-tools geany inkscape
#Installer diverse programmer i nyeste versioner - eller som ikke er med i grund repo's endnu
#gimp 2.8
sudo add-apt-repository -y ppa:otto-kesselgulasch/gimp &&
#Ubuntu-tweak
sudo add-apt-repository -y ppa:tualatrix/ppa &&
#Clip-grab
sudo add-apt-repository -y ppa:clipgrab-team/ppa &&
#Jupiter - strømstyringsprogram
sudo add-apt-repository -y ppa:webupd8team/jupiter &&
#system load indicator
sudo add-apt-repository -y ppa:indicator-multiload/stable-daily &&
#minetest - minecraft-clon
sudo add-apt-repository -y ppa:minetestdevs/daily-builds &&
#classicmenu-indicator
sudo apt-add-repository -y ppa:diesch/testing &&
#Nyeste pidgin
sudo apt-add-repository -y ppa:pidgin-developers/ppa
sudo apt-get update &&
sudo apt-get install -y gimp ubuntu-tweak clipgrab jupiter indicator-multiload minetestc55 classicmenu-indicator pidgin
#diverse programmer der kun kan hentes fra udbyder
#
#Herunder indsættes kommende ekstra programmer der kræver leverandør ppa'er
#
#VirtualBox
wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add - &&
sudo sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian precise contrib" >> /etc/apt/sources.list' &&
#Dropbox - bør måske fjernes til fordel for gdrive og UbuntuOne
sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 5044912E &&
sudo sh -c 'echo "deb http://linux.dropbox.com/ubuntu/ precise main" >> /etc/apt/sources.list.d/dropbox.list' &&
#Google Chrome
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - &&
sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' &&
#Spotify client
#sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4E9CFF4E &&
#sudo sh -c 'echo "deb http://repository.spotify.com stable non-free" >> /etc/apt/sources.list' &&
#sudo apt-get update &&
sudo apt-get install -y virtualbox-4.1 nautilus-dropbox google-chrome-stable spotify-client
exit0
Forfatter til Ubuntuguiden: http://www.vidas.dk/guides/ubuntuguiden.html
Kører LTS udgaverne.
"It's always easy if you know how to do it."
Kører LTS udgaverne.
"It's always easy if you know how to do it."
-
- Admin
- Indlæg: 10724
- Tilmeldt: 26. apr 2008, 19:27
- IRC nickname: Christian_Arvai
- Geografisk sted: Holeby - Lolland
Re: Hvorfor stopper dette script?
Godmorgen.
Jeg skal lige kigge lidt på det med VB. i aften, men du behøver ikke at sætte && til sidst - som du selv nævner er et linjeskift nok.
Jeg skal lige kigge lidt på det med VB. i aften, men du behøver ikke at sætte && til sidst - som du selv nævner er et linjeskift nok.
Med venlig hilsen Christian
"We can only see a short distance ahead, but we can see plenty there that needs to be done." -- Alan Turing
"We can only see a short distance ahead, but we can see plenty there that needs to be done." -- Alan Turing
-
- Indlæg: 2667
- Tilmeldt: 21. nov 2006, 10:06
- Geografisk sted: Fredericia
Re: Hvorfor stopper dette script?
Så blev scriptet endeligt færdigt - og testet på 12.04.2 LTS ( trekvart år har også sin ret )
Jeg overvejer om det skal smides op under opsætning, men der vil jeg lige have flere personers tanker.
Også hvis der skulle være nogen der ser at der mangler noget helt essentielt.
Jeg overvejer om det skal smides op under opsætning, men der vil jeg lige have flere personers tanker.
Også hvis der skulle være nogen der ser at der mangler noget helt essentielt.
Kode: Vælg alt
#!/bin/bash
sudo apt-get update
sudo apt-get upgrade -y
# aktivere de forskellige repositories
echo "deb http://archive.canonical.com/ubuntu/ $(lsb_release -cs) partner" > /etc/apt/sources.list
echo "deb http://archive.canonical.com/ubuntu/ $(lsb_release -cs)-updates partner" >> /etc/apt/sources.list
echo "deb http://dk.archive.ubuntu.com/ubuntu/ $(lsb_release -cs) multiverse" >> /etc/apt/sources.list
echo "deb http://dk.archive.ubuntu.com/ubuntu/ $(lsb_release -cs)-updates multiverse" >> /etc/apt/sources.list
echo "deb http://dk.archive.ubuntu.com/ubuntu/ $(lsb_release -cs) main restricted" >> /etc/apt/sources.list
echo "deb http://dk.archive.ubuntu.com/ubuntu/ $(lsb_release -cs)-updates main restricted" >> /etc/apt/sources.list
echo "deb http://dk.archive.ubuntu.com/ubuntu/ $(lsb_release -cs) universe" >> /etc/apt/sources.list
echo "deb http://dk.archive.ubuntu.com/ubuntu/ $(lsb_release -cs)-updates universe" >> /etc/apt/sources.list
#Aktivere medibuntu
#
#
#
sudo -E wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list
sudo apt-get --quiet update
sudo apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring
sudo apt-get --quiet update
#Installer flash - forskel på 64bit og 32bit udg.
#
#
#
if [[ `uname -m` == 'x86_64' ]];
then
sudo apt-get install -y flashplugin-installer;
else
sudo apt-get install -y adobe-flashplugin;
fi
# Installer plugins, java, drivers og diverse codecs
#
#
#
sudo apt-get install -y icedtea-plugin adobe-flashplugin non-free-codecs ubuntu-restricted-extras libdvdcss2 vlc-plugin-pulse mozilla-plugin-vlc totem-plugins-extra
# Installer diverse programmer
#
# Heruder indsættes andre programmer der skal installeres fra start, og som ikke kræver ekstra ppa'er
#
# Gimp
# Skype - samtale/cam client
# vlc - video afspiller
# audacity - audio editor/recorder
# gparted - partitionmanager
# sysinfo - System informationer
# rar, p7zip - vigtige pakkeprogrammer
# Gnome-system-tools -
# Users and groups
# Date and time
# Network configuration
# Runlevels
# Shared Folders through Samba or NFS
# geany - teksteditor
# inkscape - SVG editor
# Phatch - foto batch behandler
sudo apt-get install -y gimp skype vlc audacity gparted sysinfo rar p7zip gnome-system-tools geany inkscape mypaint phatch
#Installer diverse programmer i nyeste versioner - eller som ikke er med i grund repo's endnu
#Ubuntu-tweak
sudo add-apt-repository -y ppa:tualatrix/ppa
#Clip-grab
sudo add-apt-repository -y ppa:clipgrab-team/ppa
#Jupiter - strømstyringsprogram
sudo add-apt-repository -y ppa:webupd8team/jupiter
#system load indicator
sudo add-apt-repository -y ppa:indicator-multiload/stable-daily
#classicmenu-indicator
sudo apt-add-repository -y ppa:diesch/testing
sudo apt-get update
sudo apt-get install -y ubuntu-tweak clipgrab jupiter indicator-multiload classicmenu-indicator
#diverse programmer der kun kan hentes fra udbyder
#
#Herunder indsættes kommende ekstra programmer der kræver leverandør ppa'er
#
#VirtualBox
sudo wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -
sudo sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian precise contrib" >> /etc/apt/sources.list.d/virtualbox.list'
#Dropbox - bør måske fjernes til fordel for gdrive og UbuntuOne
sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 5044912E
sudo sh -c 'echo "deb http://linux.dropbox.com/ubuntu/ precise main" >> /etc/apt/sources.list.d/dropbox.list'
#Google Chrome
sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
#Spotify client
#sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4E9CFF4E &&
#sudo sh -c 'echo "deb http://repository.spotify.com stable non-free" >> /etc/apt/sources.list' &&
sudo apt-get update
sudo apt-get install -y virtualbox-4.2 dropbox google-chrome-stable
sudo apt-get update
sudo apt-get upgrade -y
exit0
Forfatter til Ubuntuguiden: http://www.vidas.dk/guides/ubuntuguiden.html
Kører LTS udgaverne.
"It's always easy if you know how to do it."
Kører LTS udgaverne.
"It's always easy if you know how to do it."
-
- Indlæg: 5095
- Tilmeldt: 27. apr 2008, 02:16
- IRC nickname: lars_t_h
- Geografisk sted: Fyn
Re: Hvorfor stopper dette script?
Hej thj01
Undskyld hvis jeg er lidt hård herunder, men din kode er ikke så elegant skrevet, hvilket sikkert bare skyldes manglende viden.
Da man ikke kan vide alt, fortæller jeg dig nu hvordan du kan lave det bedre - om du så vil bruge det eller ej er op til dig selv.
Dit script kan laves meget kønnere.
Fejlen du har begået kaldes copy-paste programmering, fordi du har gentaget det samme mønster i koden mere end 1 gang.
Hvis du kigger på de 2 her kommandoer, hvad er så ens?
Vi har flere ens dele:
1)
echo "deb http://archive.canonical.com/ubuntu/ $(lsb_release -cs) "
2)
> /etc/apt/sources.list
Den eneste forskel imellem dem er : " partner", og " updates partner".
Hvorfor er det galt at lave koden som du har lavet det?
Jo, hvis du skal skifte arkiv så skal du gøre det mange steder i koden i stedet for kun at gøre det 1 sted.
Det vil sige at du laver en variabel til at præsentere arkiv, lsb_release, og til hvilket fil (lige nu er det /etc/apt/sources.list) echo skal appende resultatet til.
Kort sagt kandiderer forskellene til at blive lagt i et array, hvor man så laver en funktion der kører kommandoen ud fra den her template :
hvor arkiv, lsbreleasecs, og filnavn er:
og array[i] er det i'te index i arrayet der hedder "array". For eksempel så returnerer $array[i], hvor i = 0 (nul) tekststrengen " partner", men hvis i=1 så returneres der " updates partner".
På den måde har du fuldstændigt genskabt indholdet af din oprindelige kode, men skulle nogle af de ting hvor du bruger være et variabelnavn i templaten der har ændret sig, kan du nu nøjes med kun at rette i koden et eneste sted for at det slår igennem overalt i scriptet.
Herunder har jeg et andet eksempel med dine sudo apt-get kommandoer:
Alle apt-get kommandoers "kommando pakke1 pakke2 ... pakkeN" eller "kommando argumet1 argument2 ... argumentN" kan du proppe ind i en tekststreng.
Du laver så et array/en liste af de kommandoer der skal køres.
Når du så vil køre en bunke kommandoer kører du dem i en loop fra et start index til et slut index.
Hele loopet kan du meget praktisk proppe ind i en funktion som du så bruger når det er nødvendigt i scriptet.
Funktionen laves sådan at vi kan bruge en reference til forskellige arrays i den samme funktion.
Det ser ca sådan her ud (jeg bruger JavaScript lignende pseudokode - altså ikke rigtig bash scripting kode som jeg ikke er så meget inde i):
Din første 2 kommandoer er sudo apt-get update og sudo apt-get upgrade -y, så i vores array starter vi med at skrive:
Funktionen kan du i øvrigt lave fuldstændig generisk (universelt anvendeligt til at loope over noget) ved at du fortæller hvilket array der skal bruges, hvorfra og hvortil i arrayet der skal laves noget, og til sidst hvilken funktion der skal køres for hvert loop.
/Lars
Undskyld hvis jeg er lidt hård herunder, men din kode er ikke så elegant skrevet, hvilket sikkert bare skyldes manglende viden.
Da man ikke kan vide alt, fortæller jeg dig nu hvordan du kan lave det bedre - om du så vil bruge det eller ej er op til dig selv.
Dit script kan laves meget kønnere.
Fejlen du har begået kaldes copy-paste programmering, fordi du har gentaget det samme mønster i koden mere end 1 gang.
Hvis du kigger på de 2 her kommandoer, hvad er så ens?
echo "deb http://archive.canonical.com/ubuntu/ $(lsb_release -cs) partner" > /etc/apt/sources.list
echo "deb http://archive.canonical.com/ubuntu/ $(lsb_release -cs)-updates partner" >> /etc/apt/sources.list
Vi har flere ens dele:
1)
echo "deb http://archive.canonical.com/ubuntu/ $(lsb_release -cs) "
2)
> /etc/apt/sources.list
Den eneste forskel imellem dem er : " partner", og " updates partner".
Hvorfor er det galt at lave koden som du har lavet det?
Jo, hvis du skal skifte arkiv så skal du gøre det mange steder i koden i stedet for kun at gøre det 1 sted.
Det vil sige at du laver en variabel til at præsentere arkiv, lsb_release, og til hvilket fil (lige nu er det /etc/apt/sources.list) echo skal appende resultatet til.
Kort sagt kandiderer forskellene til at blive lagt i et array, hvor man så laver en funktion der kører kommandoen ud fra den her template :
Kode: Vælg alt
deb_cmd=deb $arkiv $lsbreleasecs $array[i]
echo "$deb_cmd" > $filnavn
hvor arkiv, lsbreleasecs, og filnavn er:
Kode: Vælg alt
arkiv=http://archive.canonical.com/ubuntu/
lsbreleasecs=$(lsb_release -cs)
filnavn=/etc/apt/sources.list
og array[i] er det i'te index i arrayet der hedder "array". For eksempel så returnerer $array[i], hvor i = 0 (nul) tekststrengen " partner", men hvis i=1 så returneres der " updates partner".
På den måde har du fuldstændigt genskabt indholdet af din oprindelige kode, men skulle nogle af de ting hvor du bruger være et variabelnavn i templaten der har ændret sig, kan du nu nøjes med kun at rette i koden et eneste sted for at det slår igennem overalt i scriptet.
Herunder har jeg et andet eksempel med dine sudo apt-get kommandoer:
Alle apt-get kommandoers "kommando pakke1 pakke2 ... pakkeN" eller "kommando argumet1 argument2 ... argumentN" kan du proppe ind i en tekststreng.
Du laver så et array/en liste af de kommandoer der skal køres.
Når du så vil køre en bunke kommandoer kører du dem i en loop fra et start index til et slut index.
Hele loopet kan du meget praktisk proppe ind i en funktion som du så bruger når det er nødvendigt i scriptet.
Funktionen laves sådan at vi kan bruge en reference til forskellige arrays i den samme funktion.
Det ser ca sådan her ud (jeg bruger JavaScript lignende pseudokode - altså ikke rigtig bash scripting kode som jeg ikke er så meget inde i):
Din første 2 kommandoer er sudo apt-get update og sudo apt-get upgrade -y, så i vores array starter vi med at skrive:
Kode: Vælg alt
var apt_get_cmds = new Array();
apt_get_cmds[0] = "update";
apt_get_cmds[1] = "upgrade -y";
//vores loop funktion:
apt_cmd_loop(array_var, start_index, stop_index) /*array_var er en reference til vores array - ingen grund til at binde funktionen fast til kun 1 array */
{
// FIXME: her laves kode der tjekker for indeks-fejl (array out of bounds)
for (i=start_index;i <= slut_index;i++)
{
var sys_string = "sudo apt-get " + array_var[i];
system (sys_string);
}
}
Funktionen kan du i øvrigt lave fuldstændig generisk (universelt anvendeligt til at loope over noget) ved at du fortæller hvilket array der skal bruges, hvorfra og hvortil i arrayet der skal laves noget, og til sidst hvilken funktion der skal køres for hvert loop.
/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags
-
- Indlæg: 2667
- Tilmeldt: 21. nov 2006, 10:06
- Geografisk sted: Fredericia
Re: Hvorfor stopper dette script?
@lath
Jeg ved NADA om script skrivning, så jeg vil da nærlæse det du har skrevet grundigt - for vil da gerne have at det står smartere
Mine kodningsevner starter og slutter ved HTML5, CSS, jquery og JqueryMobile (og selv der er det rudimentært gg) og jeg kan til nøds lige ændre parametre i JS-kode-
Kigger på det lidt senere - og håber på at jeg lære det lidt bedre at kende ..
Jeg ved NADA om script skrivning, så jeg vil da nærlæse det du har skrevet grundigt - for vil da gerne have at det står smartere
Mine kodningsevner starter og slutter ved HTML5, CSS, jquery og JqueryMobile (og selv der er det rudimentært gg) og jeg kan til nøds lige ændre parametre i JS-kode-
Kigger på det lidt senere - og håber på at jeg lære det lidt bedre at kende ..
Forfatter til Ubuntuguiden: http://www.vidas.dk/guides/ubuntuguiden.html
Kører LTS udgaverne.
"It's always easy if you know how to do it."
Kører LTS udgaverne.
"It's always easy if you know how to do it."
-
- Admin
- Indlæg: 3650
- Tilmeldt: 5. mar 2010, 19:58
- IRC nickname: nicky
- Geografisk sted: 192.168.20.42
Re: Hvorfor stopper dette script?
Da jeg skiftede til Linux i 2009, startede jeg næsten med det samme med at lave små og simple programmer i SH. Ikke noget voldsomt, bare småting til at gøre hverdagen lidt nemmere. Fx Alt hvad det gør, er at spare mig én kommando når jeg gerne vil opdatere fra terminalen.
Ved at eksperimentere mig frem, er programmerne stille og roligt vokset (-pXXX er portnummeret)
Og vokset
Idag kan jeg også Perl og en smule PHP, og det hele startede med aptget-programmet
Kode: Vælg alt
titanus@asrock:~$ cat /usr/local/bin/aptget
#!/bin/bash
sudo apt-get update
sudo apt-get upgrade
Ved at eksperimentere mig frem, er programmerne stille og roligt vokset
Kode: Vælg alt
titanus@asrock:~$ cat /usr/local/bin/update-postfix-guide
#!/bin/bash
rsync -avz -e 'ssh -pXXX' --delete-after --progress --bwlimit=40 \
/home/titanus/Linux/Ubuntu/postfix/ \
titanus@31.192.231.5:/home/www/postfix/
exit 0
Og vokset
Kode: Vælg alt
titanus@asrock:~$ cat /usr/local/bin/mkp
#/bin/bash
if [ -e "/usr/bin/which" ] ; then
WHICH="/usr/bin/which"
else
echo "which ikke fundet, afslutter..." > /dev/stderr
exit 10
fi
MKPWD=$($WHICH makepasswd)
if [ "$?" -ne "0" ] ; then
echo "makepasswd ikke fundet, prøver og installere det nu..." > /dev/stderr
echo
echo "Tryk CTRL+C for at afbryde"
sudo apt-get install makepasswd
fi
if [ -z $MKPWD ] ; then
MKPWD=$($WHICH makepasswd)
if [ "$?" -ne "0" ] ; then
echo "makepasswd ikke installeret, afslutter..." > /dev/stderr
exit 10
fi
fi
clear
while [ $# -ne 0 ] ; do
PARAM="$1"
shift
case "$PARAM" in
-r|run)
case $1 in
*[!0-9]* | "")
echo "{ $PARAM } må ikke være tom, og skal efterfølges af ét eller flere tal."
echo "Se evt. { $(basename $0) -o } for detaljer."
exit
;;
*)
RUN=$1
shift
;;
esac
;;
-l|længde)
case $1 in
*[!0-9]* | "")
echo "{ $PARAM } må ikke være tom, og skal efterfølges af ét eller flere tal."
echo "Se evt. { $(basename $0) -o } for detaljer."
exit
;;
*)
LENGTH=$1
shift
;;
esac
;;
-o|om|*)
echo " --- $(basename $0) er en wrapper til programmet makepasswd --- "
echo "Gyldig brug af programmet er:"
echo
echo "{ -l | længde } sætter hvor lange kodeordene skal være"
echo "{ -r | run } sætter hvor mange kodeord der skal generes"
echo "{ -o | om } viser denne hjælpetekst"
echo
echo "Kaldes programmet uden nogen parametre, så vil ét kodeord"
echo "på 15 tegn blive generet."
exit 0
;;
esac
done
if [ -z $LENGTH ] ; then
LENGTH=15
fi
if [ -z $RUN ] ; then
RUN=5
fi
echo "Kører { $MKPWD --chars $LENGTH } $RUN gange nu..."
echo
START=$(date +%s.%N)
while [ "$RUN" -ne "0" ] ; do
$MKPWD --chars $LENGTH
RUN=$((RUN-1))
if [ $LENGTH -ge 81 ] ; then
echo
fi
done
STOP=$(date +%s.%N)
echo && echo "Gennemført på $(echo $STOP - $START | bc) sekunder"
exit 0
Idag kan jeg også Perl og en smule PHP, og det hele startede med aptget-programmet
Hvem er online
Brugere der læser dette forum: Ingen og 0 gæster