PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : andere ausgabe ob konsole oder script



MatheStein
02.09.09, 15:40
hey leute hab ein kleines problem und zwar bekomme ich wenn ich

set | grep -oi [a-z][a-z]*=[a-z0-9][a-z0-9]* | sort

in die konsole eingebe ein anderes ergebnis als wenn ich ein stinknormales skript mit den zeilen

#! /bin/bash
set | grep -oi [a-z][a-z]*=[a-z0-9][a-z0-9]* | sort

ausführe.

wisst ihr woran das liegen könnte?

hab die shebang zeile in dem script sogar mal bei einem testdurchlauf weggelassen und das problem besteht weiterhin

gruß

marce
02.09.09, 15:50
also hier:

root@web1 ~]# set | grep -oi [a-z][a-z]*=[a-z0-9][a-z0-9]* | sort > 1
[root@web1 ~]# ./test.sh > 2
[root@web1 ~]# diff 1 2
9d8
< COLUMNS=129
11d9
< consoletype=pty
22d19
< HISTFILESIZE=1000
28d24
< LINES=47
33d28
< MAILCHECK=60
42c37
< PPID=26576
---
> PPID=26582
46c41
< SHLVL=1
---
> SHLVL=2

kein Unterschied, der nicht logisch wäre...

MatheStein
02.09.09, 16:00
erstell mal paar variablen in der konsole. die zeigt das script nicht an

sowas wie a=5 oder so

marce
02.09.09, 16:02
Und was wundert dich daran?

-> man export

MatheStein
02.09.09, 16:05
angenomme ich erstelle eine variable a=5. dann müssten doch sowohl

set | grep -oi [a-z][a-z]*=[a-z0-9][a-z0-9]* | sort

in der konsole sowie das script die variable mit ausgeben oder?
bin noch anfänger sollte ich glaub ich mal dazu erwähnen :)


ganz allgemein gibt doch ein script seine zeilen nach und nach in die konsole ein oder nicht?

gruß

marce
02.09.09, 16:25
2x nein.

Wenn Du eine Variable erstellst ist die in der aktuellen Shell existent. In anderen ist sie nicht bekannt - außer, du exportierst sie. Dann ist sie in der aktuellen Shell und deren Kindern bekannt.

Schau Dir mal die entsprechenden Kapitel im Advanced Bash Scritping Guide an (Gültigkeitsbereich von Variablen)...

Und ein Script gibt nicht seine Befehle in der Konsole ein. Die Ausführung übernimmt komplett von der Konsole unabhängig der definierte Interpreter / Parser / ...

MatheStein
02.09.09, 16:32
wenn ich das script in der konsole ausführe, wird das script dann in einer tochtershell gestartet? weil auch mit export gibt das script die exportierte variable nicht aus :(

und zu der sache mit dem script:

wenn ich ein script von der bash interpretieren lasse, bekomme ich das selbe ergebnis als wenn ich manuell die zeilen nach und nach in eine bashkonsole eingebe oder?

vielen dank schonmal für deine hilfen :)

gruß

marce
02.09.09, 16:37
wenn ich das script in der konsole ausführe, wird das script dann in einer tochtershell gestartet? weil auch mit export gibt das script die exportierte variable nicht aus :(

bei mir gibt's die Variable aus -> was machst Du exakt und wie und in welcher Reihenfolge?


und zu der sache mit dem script:

wenn ich ein script von der bash interpretieren lasse, bekomme ich das selbe ergebnis als wenn ich manuell die zeilen nach und nach in eine bashkonsole eingebe oder?
nicht zwingend.

MatheStein
02.09.09, 16:40
hey
mit source klappt das auch toll, dann führt der das script direkt in der selben umgebung aus. hab ich gerade in einem buch bei google gefunden, aber kennst du sicher schon :D

mit export hab ich das folgendermaßen gemacht:

zzzz=3
export zzzz
(hier habe ich dann das skript ausgeführt aber zzzz wurde nicht angezeigt)

zu der sache mit dem script:

in welchen fall hat man denn unterschiedliche ergebnisse?