Olika variabler ur samma string (expect script)

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Knaskalle
Inlägg: 2
Blev medlem: 17 jan 2008, 15:51

Olika variabler ur samma string (expect script)

Inlägg av Knaskalle »

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
Användarvisningsbild
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)

Inlägg av mcNisse »

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:

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
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: Olika variabler ur samma string (expect script)

Inlägg av Konservburk »

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#*.}"
Användarvisningsbild
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)

Inlägg av mcNisse »

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 $adress

Kod: Markera allt

port="${1%%.*}"
adress="${1#*.}"
Det är härligt att se :) Jag gillar verkligen att se nya sätt att koda skalskript. Är dessa konstruktioner bash specificka eller finns de andra skal också?

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
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: Olika variabler ur samma string (expect script)

Inlägg av Konservburk »

mcNisse skrev:
Konservburk skrev:

Kod: Markera allt

port="${1%%.*}"
adress="${1#*.}"
Är dessa konstruktioner bash specificka eller finns de andra skal också?
Jag vet att det fungerar i åtminstone bash, zsh, ksh, ash, dash, busybox.
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.
Knaskalle
Inlägg: 2
Blev medlem: 17 jan 2008, 15:51

SV: Olika variabler ur samma string (expect script)

Inlägg av Knaskalle »

Konservburk skrev:

Kod: Markera allt

port="${1%%.*}"
adress="${1#*.}"
Det funkade prima, tack!
Zhaozhou
Inlägg: 183
Blev medlem: 03 jul 2007, 22:24
OS: Annat GNU/Linux
Kontakt:

SV: Olika variabler ur samma string (expect script)

Inlägg av Zhaozhou »

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 $adress

Kod: Markera allt

port="${1%%.*}"
adress="${1#*.}"
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]
Skriv svar

Återgå till "Terminalforum"