Hjälp med Bash

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Magnuntu
Inlägg: 134
Blev medlem: 12 apr 2007, 12:05
OS: Annat GNU/Linux
Ort: Karlstad

Hjälp med Bash

Inlägg av Magnuntu »

Jag har letat runt efter bra länkar, men ingen sida täcker det mesta om Bash. Vet ni någon sida? Annars skulle jag behöva lite hjälp med några saker:

1. Lista filer i variabel
Få alla filer från en mapp i en variabel ungefär såhär: "fil1.txt fil2.avi fil3.jpg" Ett extra plus vore om det gick att filtrera dom så att bara filer med VISSA ändelser listas (*.txt, *.doc, *.odt etc).

2. Fördefinierad read
Få "read VAR" att visa ett redan inställt värde, vilket man kan ändra istället för att skriva in ett nytt värde från scratch. Detta är som jag har TÄNKT att det borde fungera:

Kod: Markera allt

TEXT="Hej Gunnar"
echo "Är detta välkomsttexten du vill ha?"
read TEXT
echo TEXT
borde visa

Kod: Markera allt

Är detta välkomsttexten du vill ha?
Hej Gunnar     <- Redigerbar
3. Läsa variabler från dokument
Jag skulle vilja läsa variabler från ett annat dokument. Om ni kan PHP vet ni vad jag menar med:

Kod: Markera allt

FIL_1.php

include("FIL_2.php");
echo $VAR['arrA'].'<br>';
echo $VAR['arrB'].'<hr>';
echo $VAR['arrC'];

Kod: Markera allt

FIL_2.php

$VAR['arrA'] = 'Om Ubuntu';
$VAR['arrB'] = 'Ubuntu är ett trevligt operativsystem!';
$VAR['arrC'] = 'Skrivet av mig';
Om du kan svara, SVARA :) Jag är jättetacksam för all hjälp jag kan få :P Jag har fler frågor, men dom kommer senare (om det inte finns någon bra sida med mer hjälp).

Förresten, jag har hittat den officiella manualen, men det finns alltför lite exempel :(
Vill du ha en Linuxtidning? Skriv under här!
Musik som du aldrig har hört den förr
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: Hjälp med Bash

Inlägg av Konservburk »

Mange Muck skrev: Jag har letat runt efter bra länkar, men ingen sida täcker det mesta om Bash. Vet ni någon sida? Annars skulle jag behöva lite hjälp med några saker:
http://tldp.org/LDP/abs/html/
Mange Muck skrev: 1. Lista filer i variabel
Få alla filer från en mapp i en variabel ungefär såhär: "fil1.txt fil2.avi fil3.jpg" Ett extra plus vore om det gick att filtrera dom så att bara filer med VISSA ändelser listas (*.txt, *.doc, *.odt etc).

Kod: Markera allt

variabel1=(*)
variabel2=(*.txt *.doc *.odt)
echo "${variabel1[0]}"
echo "${variabel1[1]}"

echo "${variabel1[*]}"
Mange Muck skrev: 3. Läsa variabler från dokument
Jag skulle vilja läsa variabler från ett annat dokument. Om ni kan PHP vet ni vad jag menar med:

Kod: Markera allt

FIL_1.php

include("FIL_2.php");
echo $VAR['arrA'].'<br>';
echo $VAR['arrB'].'<hr>';
echo $VAR['arrC'];

Kod: Markera allt

FIL_2.php

$VAR['arrA'] = 'Om Ubuntu';
$VAR['arrB'] = 'Ubuntu är ett trevligt operativsystem!';
$VAR['arrC'] = 'Skrivet av mig';

Kod: Markera allt

source fil_nummer_2
Magnuntu
Inlägg: 134
Blev medlem: 12 apr 2007, 12:05
OS: Annat GNU/Linux
Ort: Karlstad

SV: Hjälp med Bash

Inlägg av Magnuntu »

Tack för de svaren! Jag har provat att inkludera en fil, och fick då en följdfråga. Finns det något sätt att ta reda på vilken mapp skriptet körs ifrån?
Vill du ha en Linuxtidning? Skriv under här!
Musik som du aldrig har hört den förr
Användarvisningsbild
Barre
Inlägg: 2298
Blev medlem: 13 dec 2006, 10:23
OS: Ubuntu
Ort: Stockholm
Kontakt:

SV: Hjälp med Bash

Inlägg av Barre »

kommandot pwd talar om vilken mapp du står i
________________________________________________________________
twitter @ BarreGargamel
blogg @ Gargamel.NU
Magnuntu
Inlägg: 134
Blev medlem: 12 apr 2007, 12:05
OS: Annat GNU/Linux
Ort: Karlstad

SV: Hjälp med Bash

Inlägg av Magnuntu »

Tack, det fungerar om man startar skriptet via terminalen, men om man har en genväg kommer det att visa /home/användare bara...
Vill du ha en Linuxtidning? Skriv under här!
Musik som du aldrig har hört den förr
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: Hjälp med Bash

Inlägg av Konservburk »

Mange Muck skrev: om man har en genväg kommer det att visa /home/användare bara...
Det är för att skriptet körs från /home/användare i det fallet.

Men du kanske ville ta reda på var själva skriptfilen ligger?
Magnuntu
Inlägg: 134
Blev medlem: 12 apr 2007, 12:05
OS: Annat GNU/Linux
Ort: Karlstad

SV: Hjälp med Bash

Inlägg av Magnuntu »

JA, det vill jag :) Kan du det?
Vill du ha en Linuxtidning? Skriv under här!
Musik som du aldrig har hört den förr
Användarvisningsbild
Barre
Inlägg: 2298
Blev medlem: 13 dec 2006, 10:23
OS: Ubuntu
Ort: Stockholm
Kontakt:

SV: Hjälp med Bash

Inlägg av Barre »

$0 är variablen som innehåller scriptnamnet..
men hjälp av det så går det att "leka" lite för att få fram det man vill...

Kod: Markera allt

SCRIPT=$0
SCRIPTNAME=${SCRIPT##*/}
SCRIPTPATH=${SCRIPT%%$SCRIPTNAME}

echo Full script path = $SCRIPT
echo Script name      = $SCRIPTNAME
echo Script path      = $SCRIPTPATH
________________________________________________________________
twitter @ BarreGargamel
blogg @ Gargamel.NU
Magnuntu
Inlägg: 134
Blev medlem: 12 apr 2007, 12:05
OS: Annat GNU/Linux
Ort: Karlstad

SV: Hjälp med Bash

Inlägg av Magnuntu »

Tack för det! Jag har ingen aning om hur du tänkte där... Men det fungerar! :P

Förresten, kan jag kommer använda modifieringar eller exakta kopior av era förslag till kod i ett opensourceprogram som jag håller på med? Ni får givetvis cred och eventuell länk.
Vill du ha en Linuxtidning? Skriv under här!
Musik som du aldrig har hört den förr
Användarvisningsbild
Barre
Inlägg: 2298
Blev medlem: 13 dec 2006, 10:23
OS: Ubuntu
Ort: Stockholm
Kontakt:

SV: Hjälp med Bash

Inlägg av Barre »

nema problema.... ;)
________________________________________________________________
twitter @ BarreGargamel
blogg @ Gargamel.NU
Magnuntu
Inlägg: 134
Blev medlem: 12 apr 2007, 12:05
OS: Annat GNU/Linux
Ort: Karlstad

SV: Hjälp med Bash

Inlägg av Magnuntu »

DrKonservburk skrev:

Kod: Markera allt

variabel1=(*)
variabel2=(*.txt *.doc *.odt)
echo "${variabel1[0]}"
echo "${variabel1[1]}"

echo "${variabel1[*]}"
Kan detta lista filer i en speciell mapp?
Vill du ha en Linuxtidning? Skriv under här!
Musik som du aldrig har hört den förr
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: Hjälp med Bash

Inlägg av Konservburk »

Barre skrev:
$0 är variablen som innehåller scriptnamnet..
Det är dock bra att veta att $0 inte är tillförlitlig.
Den kan vara lite vad som helst beroende på vilken
skal-version man använder och hur skripet startades

Jämför t.ex...

Kod: Markera allt

bash$ echo 'echo $0' >./skriptet
bash$ sh ./skriptet
./skriptet
bash$ sh <./skriptet
sh
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: Hjälp med Bash

Inlägg av Konservburk »

Mange Muck skrev:
DrKonservburk skrev:

Kod: Markera allt

variabel1=(*)
variabel2=(*.txt *.doc *.odt)
echo "${variabel1[0]}"
echo "${variabel1[1]}"

echo "${variabel1[*]}"
Kan detta lista filer i en speciell mapp?
Antigen får du göra:

Kod: Markera allt

VAR=(speciell_mapp/*)
...eller helt enkelt:

Kod: Markera allt

cd speciell_mapp
VAR=(*)
Magnuntu
Inlägg: 134
Blev medlem: 12 apr 2007, 12:05
OS: Annat GNU/Linux
Ort: Karlstad

SV: Hjälp med Bash

Inlägg av Magnuntu »

Tackar :) Fattar det bättre nu också.

Lösning på problem två saknas fortfarande!
Vill du ha en Linuxtidning? Skriv under här!
Musik som du aldrig har hört den förr
Användarvisningsbild
Barre
Inlägg: 2298
Blev medlem: 13 dec 2006, 10:23
OS: Ubuntu
Ort: Stockholm
Kontakt:

SV: Hjälp med Bash

Inlägg av Barre »

DrKonservburk skrev:
Barre skrev:
$0 är variablen som innehåller scriptnamnet..
Det är dock bra att veta att $0 inte är tillförlitlig.
Den kan vara lite vad som helst beroende på vilken
skal-version man använder och hur skripet startades

Jämför t.ex...

Kod: Markera allt

bash$ echo 'echo $0' >./skriptet
bash$ sh ./skriptet
./skriptet
bash$ sh <./skriptet
sh
sant... men frågan var ju faktiskt Bash... som tråden heter... "Hälp med Bash".
Tyckte det kändes onödigt att ta upp att sh ksh och andra skal kanske inte fungerar då ;)
________________________________________________________________
twitter @ BarreGargamel
blogg @ Gargamel.NU
Användarvisningsbild
Barre
Inlägg: 2298
Blev medlem: 13 dec 2006, 10:23
OS: Ubuntu
Ort: Stockholm
Kontakt:

SV: Hjälp med Bash

Inlägg av Barre »

Mange Muck, kanske dialog är något som skulle intressera dig?
http://www.linuxjournal.com/article/2460

har inte använt det så mycket själv, men det finns en --inputbox som skulle kunan vara ett alternativ för problem 2.
Senast redigerad av 1 Barre, redigerad totalt 17 gånger.
________________________________________________________________
twitter @ BarreGargamel
blogg @ Gargamel.NU
Magnuntu
Inlägg: 134
Blev medlem: 12 apr 2007, 12:05
OS: Annat GNU/Linux
Ort: Karlstad

SV: Hjälp med Bash

Inlägg av Magnuntu »

Jag får detta när jag kör deras exempelskript tyvärr:

Kod: Markera allt

./bash: 4: dialog: not found
Vill du ha en Linuxtidning? Skriv under här!
Musik som du aldrig har hört den förr
Användarvisningsbild
Barre
Inlägg: 2298
Blev medlem: 13 dec 2006, 10:23
OS: Ubuntu
Ort: Stockholm
Kontakt:

SV: Hjälp med Bash

Inlägg av Barre »

börja med att installera dialog.

från terminalen skriv:
sudo apt-get install dialog
________________________________________________________________
twitter @ BarreGargamel
blogg @ Gargamel.NU
Magnuntu
Inlägg: 134
Blev medlem: 12 apr 2007, 12:05
OS: Annat GNU/Linux
Ort: Karlstad

SV: Hjälp med Bash

Inlägg av Magnuntu »

Snyggt, och tack för det. Men, då måste man installera dialog (vilket går att göra från skriptet iofs). Dessutom verkar det lite smått krångligt, men det kanske det inte är. Jag får försöka väga fördelarna mot nackdelarna en stund och se vad jag ska göra.

Så länge, finns det inget alternativ där man kan låta read redan ha en sträng skriven?
Vill du ha en Linuxtidning? Skriv under här!
Musik som du aldrig har hört den förr
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

SV: Hjälp med Bash

Inlägg av mcNisse »

Ibland fungerar echo -n.
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
Skriv svar

Återgå till "Terminalforum"