Sida 1 av 3
Hjälp med Bash
Postat: 17 maj 2007, 12:53
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å

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

SV: Hjälp med Bash
Postat: 17 maj 2007, 13:00
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';
SV: Hjälp med Bash
Postat: 17 maj 2007, 13:14
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?
SV: Hjälp med Bash
Postat: 17 maj 2007, 13:27
av Barre
kommandot pwd talar om vilken mapp du står i
SV: Hjälp med Bash
Postat: 17 maj 2007, 13:31
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...
SV: Hjälp med Bash
Postat: 17 maj 2007, 13:33
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?
SV: Hjälp med Bash
Postat: 17 maj 2007, 13:53
av Magnuntu
JA, det vill jag

Kan du det?
SV: Hjälp med Bash
Postat: 17 maj 2007, 13:54
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
SV: Hjälp med Bash
Postat: 17 maj 2007, 14:02
av Magnuntu
Tack för det! Jag har ingen aning om hur du tänkte där... Men det fungerar!
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.
SV: Hjälp med Bash
Postat: 17 maj 2007, 14:08
av Barre
nema problema....

SV: Hjälp med Bash
Postat: 17 maj 2007, 14:29
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?
SV: Hjälp med Bash
Postat: 17 maj 2007, 14:33
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
SV: Hjälp med Bash
Postat: 17 maj 2007, 14:35
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:
...eller helt enkelt:
SV: Hjälp med Bash
Postat: 17 maj 2007, 14:55
av Magnuntu
Tackar

Fattar det bättre nu också.
Lösning på problem två saknas fortfarande!
SV: Hjälp med Bash
Postat: 17 maj 2007, 15:09
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å

SV: Hjälp med Bash
Postat: 17 maj 2007, 15:35
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.
SV: Hjälp med Bash
Postat: 17 maj 2007, 16:08
av Magnuntu
Jag får detta när jag kör deras exempelskript tyvärr:
SV: Hjälp med Bash
Postat: 17 maj 2007, 16:16
av Barre
börja med att installera dialog.
från terminalen skriv:
sudo apt-get install dialog
SV: Hjälp med Bash
Postat: 17 maj 2007, 16:31
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?
SV: Hjälp med Bash
Postat: 17 maj 2007, 17:11
av mcNisse
Ibland fungerar echo -n.