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å :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 :(

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';

Kod: Markera allt

source fil_nummer_2

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! :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.

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:

Kod: Markera allt

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

Kod: Markera allt

cd speciell_mapp
VAR=(*)

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:

Kod: Markera allt

./bash: 4: dialog: not found

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.