Olika variabler ur samma string (expect script)
Olika variabler ur samma string (expect script)
Hej
Det jag undrar över är hur jag tar ut flera variabler ur samma string i ett expect script.
exempel:
"./hax.sh asd123.qwerty1.123.se"
så vill jag ur denna ta ut "asd123" till $port och qwerty1.123.se till $adress
tack på förhand!
/ Kalle
Det jag undrar över är hur jag tar ut flera variabler ur samma string i ett expect script.
exempel:
"./hax.sh asd123.qwerty1.123.se"
så vill jag ur denna ta ut "asd123" till $port och qwerty1.123.se till $adress
tack på förhand!
/ Kalle
- mcNisse
- Inlägg: 5211
- Blev medlem: 06 feb 2007, 20:51
- OS: Debian
- Utgåva: Vet inte/ingen utgåva passar
SV: Olika variabler ur samma string (expect script)
Det går inte. I alla fall inte på det viset du beskriver...
Du kan inte påverka ett yttre skals variabler. Det du behöver göra är att "sourca" in skriptet.
Här är enkelt skript som visar principen:
För att dela strängen kan du använda port=`echo $1 |cut -d. -f1` och adress=`echo $1|cut -d. -f2-`
Du kan äver göra ett skript som returnerar (skriver ut port adress) och tilldela dem till en array. Men jag hinner/kan inte beskriva det. Tyvär. Du måsta använde ett skal som kan hantera arrayer, tex bash.
Du kan inte påverka ett yttre skals variabler. Det du behöver göra är att "sourca" in skriptet.
Här är enkelt skript som visar principen:
Kod: Markera allt
#!/bin/sh
olle=$1
bull=$2
Kod: Markera allt
. ./skript ett tva
echo $olle $bull
ett tva
För att dela strängen kan du använda port=`echo $1 |cut -d. -f1` och adress=`echo $1|cut -d. -f2-`
Du kan äver göra ett skript som returnerar (skriver ut port adress) och tilldela dem till en array. Men jag hinner/kan inte beskriva det. Tyvär. Du måsta använde ett skal som kan hantera arrayer, tex bash.
KDE 4.5 SC är ute i det fria!!! Tjoho
Stagnation is good for nobody - after all if you don't progress you end up with gnome
Stagnation is good for nobody - after all if you don't progress you end up with gnome
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
SV: Olika variabler ur samma string (expect script)
Knaskalle skrev: "./hax.sh asd123.qwerty1.123.se"
så vill jag ur denna ta ut "asd123" till $port och qwerty1.123.se till $adress
Kod: Markera allt
port="${1%%.*}"
adress="${1#*.}"
- mcNisse
- Inlägg: 5211
- Blev medlem: 06 feb 2007, 20:51
- OS: Debian
- Utgåva: Vet inte/ingen utgåva passar
SV: Olika variabler ur samma string (expect script)
Det är härligt att seKonservburk skrev:Knaskalle skrev: "./hax.sh asd123.qwerty1.123.se"
så vill jag ur denna ta ut "asd123" till $port och qwerty1.123.se till $adressKod: Markera allt
port="${1%%.*}" adress="${1#*.}"

Edit: Tog bort skräp som jag klistrade in i citatet av misstag...
KDE 4.5 SC är ute i det fria!!! Tjoho
Stagnation is good for nobody - after all if you don't progress you end up with gnome
Stagnation is good for nobody - after all if you don't progress you end up with gnome
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
SV: Olika variabler ur samma string (expect script)
Jag vet att det fungerar i åtminstone bash, zsh, ksh, ash, dash, busybox.mcNisse skrev:Är dessa konstruktioner bash specificka eller finns de andra skal också?Konservburk skrev:Kod: Markera allt
port="${1%%.*}" adress="${1#*.}"
Det ska fungera i alla posix(/bin/sh)-skal, se The Single UNIX Specification
Däremot är det inte säkert att det fungerar på gamla UNIX-system från
80-talet som System V och liknande. Men där är det även mycket annat
som inte heller fungerar, så det är oftast ingen idé att försöka ta hänsyn
till sådant. T.ex. finns det riktigt gamla /bin/sh-versioner som inte klarar
av kommentarer med #-tecknet.
SV: Olika variabler ur samma string (expect script)
Det funkade prima, tack!Konservburk skrev:Kod: Markera allt
port="${1%%.*}" adress="${1#*.}"
SV: Olika variabler ur samma string (expect script)
Ibland undrar jag vart du lär dig allt.[me=Zhaozhou]har letat överallt, men inte varigt nära några howto's som beskriver sånt där.[/me]Konservburk skrev:Knaskalle skrev: "./hax.sh asd123.qwerty1.123.se"
så vill jag ur denna ta ut "asd123" till $port och qwerty1.123.se till $adressKod: Markera allt
port="${1%%.*}" adress="${1#*.}"