Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[gelöstScriptmeister gesucht: daten an bash script übergeben
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
xraver
Veteran
Veteran


Joined: 20 Aug 2003
Posts: 1083
Location: Halberstadt

PostPosted: Sat May 24, 2008 1:29 pm    Post subject: [gelöstScriptmeister gesucht: daten an bash script übergeben Reply with quote

Hallo,
ich möchte einem Script ne Menge Daten übergeben.
Das mach ich bis jetzt so:

Code:
echo "$1" |<weiteres_programm>

Das Script wird von einen anderen Programm aufgerufen was die Daten übergibt. (meinscript.sh "%s")
Soweit funktioniert das ganz gut.

Nun mein Problem.
Dei Daten enthalten Zeilen von Code. Da in dem Code Zeichen wie '' oder sonstige enthalten sind kommt es zu Probleme.
Kleine Sachen wie
"hallo world
hallo gentoo" werden problemlos übergeben. Bei ner Menge Code gibts es Probleme.
Wie kann ich nun meinen Script zig Zeilen von Code übergeben ohne das Bash versucht diese zu interpretieren?


Last edited by xraver on Sat May 24, 2008 5:35 pm; edited 1 time in total
Back to top
View user's profile Send private message
manuels
Advocate
Advocate


Joined: 22 Nov 2003
Posts: 2146
Location: Europe

PostPosted: Sat May 24, 2008 2:14 pm    Post subject: Reply with quote

wie wäre es mit
Code:

programm < cat dateimitdaten

_________________
Build your own live cd with catalyst 2.0!
Back to top
View user's profile Send private message
think4urs11
Bodhisattva
Bodhisattva


Joined: 25 Jun 2003
Posts: 6659
Location: above the cloud

PostPosted: Sat May 24, 2008 2:31 pm    Post subject: Reply with quote

wozu soll das 'useless use of cat' nützen?
Code:
programm < daten


und da das ganze nicht direkt was mit Gentoo zu tun hat -> verschoben ins Diskussionsforum
_________________
Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself
Back to top
View user's profile Send private message
xraver
Veteran
Veteran


Joined: 20 Aug 2003
Posts: 1083
Location: Halberstadt

PostPosted: Sat May 24, 2008 2:42 pm    Post subject: Reply with quote

manuels wrote:
wie wäre es mit
Code:

programm < cat dateimitdaten

Das Problem is ja das die dasten von dem Hauptprogramm in %s drinen stehen.
Wenn das Programm z.b echo '%s'|mysript aufruft dann interpretiert die bash das zeugs was in %s drinne steht.
Auch meinsript "%s" will nicht.
Back to top
View user's profile Send private message
xraver
Veteran
Veteran


Joined: 20 Aug 2003
Posts: 1083
Location: Halberstadt

PostPosted: Sat May 24, 2008 2:49 pm    Post subject: Reply with quote

Think4UrS11 wrote:
wozu soll das 'useless use of cat' nützen?
Code:
programm < daten


Funktioniert nicht.
Wernn ich im Programm den aufruf myscript < %s damm komm der error
Quote:
/bin/sh: test: Datei oder Verzeichnis nicht gefunden
/bin/sh: -c: line 3: unexpected EOF while looking for matching `"'
/bin/sh: -c: line 6: syntax error: unexpected end of file


In %s steht
'test'
"test'
test
"'test'"
(test)
('test')')


Will doch nur das %s an script xy so übergeben wird wie es in %s steht ;(
Think4UrS11 wrote:
und da das ganze nicht direkt was mit Gentoo zu tun hat -> verschoben ins Diskussionsforum

hab ich doch im Diskussionsforum gepostet - oder nich?
Back to top
View user's profile Send private message
think4urs11
Bodhisattva
Bodhisattva


Joined: 25 Jun 2003
Posts: 6659
Location: above the cloud

PostPosted: Sat May 24, 2008 3:03 pm    Post subject: Reply with quote

evtl. kann ich dir nicht ganz folgen ... klappt doch
Code:
think@q35 ~/test $ cat intest.in
'test'
"test'
test
"'test'"
(test)
('test')')

think@q35 ~/test $ IFS=\n; sepp=$(< intest.in)

think@q35 ~/test $ echo $sepp
'test'
"test'
test
"'test'"
(test)
('test')')

think@q35 ~/test $ while read a; do echo $a; done < $sepp
bash: 'test'
"test'
test
"'test'"
(test)
('test')'): Datei oder Verzeichnis nicht gefunden

_________________
Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself
Back to top
View user's profile Send private message
xraver
Veteran
Veteran


Joined: 20 Aug 2003
Posts: 1083
Location: Halberstadt

PostPosted: Sat May 24, 2008 3:25 pm    Post subject: Reply with quote

Think4UrS11, danke für deine Bemühungen. aber so gehts nicht.
Ich versuchs nochmal von vorne zu erklären. Eins vorweg, die daten verändern würden keinen sinn machen.

Also ein Programm versucht die Daten an mein Script zu übergeben. Die Daten speichert das Programm in %s - und in %s steht nun
Code:
'test'"test'test"'test'"(test)('test')


Also sage ich nun dem Programm, hey rufe folgenden befehl auf:
Code:
echo %s

Kommt als Output:
Quote:
/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
/bin/sh: -c: line 1: syntax error: unexpected end of file


Fehler passieren auch mit folgenden Versuchen:
echo "%s"
echo '%s'
Egal ob nun mit echo oder der versuch es als Argument an ein andere Prgramm zu übergeben bringt schlägt fehl.
Entweder versucht die Bash command substitution zu machen oder verändert den Inhalt. (z.b " Fehlen dann)

Nach Stundenlangen Versuchen glaub ich fast das die bash einfach zu blöd ist den Inhalt von %s an einen Programm zu übergeben.
Back to top
View user's profile Send private message
manuels
Advocate
Advocate


Joined: 22 Nov 2003
Posts: 2146
Location: Europe

PostPosted: Sat May 24, 2008 3:43 pm    Post subject: Reply with quote

Hmm, so richtig versteh ich das Problem nicht.

Bringt dich sowas hier weiter?
Code:
# cat test
'test'"test'test"'test'"(test)('test')
# VAR=`cat test `
# echo $VAR
'test'"test'test"'test'"(test)('test')

_________________
Build your own live cd with catalyst 2.0!
Back to top
View user's profile Send private message
xraver
Veteran
Veteran


Joined: 20 Aug 2003
Posts: 1083
Location: Halberstadt

PostPosted: Sat May 24, 2008 3:58 pm    Post subject: Reply with quote

Hm, und ich verstehe nicht was ihr daran nicht versteht?
'test'"test'test"'test'"(test)('test') steht nicht in einer Datei sondern wird von einem Programm übergeben.
Währe das gleiche als wenn ich ein echo test'"test'test"'test'"(test)('test') versuchen würde.

Versucht doch mal test'"test'test"'test'"(test)('test') in eine Datei ohne Text Editor zu schreiben.
echo <hier_darf_was_drum>test'"test'test"'test'"(test)('test') <hier_darf_was_drum> >> output
Back to top
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6749

PostPosted: Sat May 24, 2008 4:30 pm    Post subject: Reply with quote

xraver wrote:
Also sage ich nun dem Programm, hey rufe folgenden befehl auf:
Code:
echo %s

Nach Stundenlangen Versuchen glaub ich fast das die bash einfach zu blöd ist den Inhalt von %s an einen Programm zu übergeben.

Wenn ich Deine Aussage richtig interpretiere, ist "das Programm" um das es oben geht, gar kein Shell Script, sondern in irgendeiner anderen Sprache geschrieben, denn %s ist ja keine Shell-Variable. Mir scheint, Du willst "das Programm" dazu bringen, zum Erzeugen einer Ausgabe ein Shell-Kommando abzusetzen, das sowohl das "echo" als auch noch ein weiteres Programm (das die Ausgabe von echo bekommen soll) starten soll. Das ist nicht zweckmäßig: Du solltest lieber das andere Programm direkt aufrufen und zum Pipen der Daten die dafür vorgesehenen Mechanismen der Programmiersprache benutzen, in der "das Programm" geschrieben ist. Erzähle also lieber, welche Programmiersprache Du dafür benutzt, statt nach nicht sinnvollen Shell-Mechanismen zu suchen.

Ansonsten bleibt Dir nichts anderes übrig, als manuell zu quoten, und auch dann wirst Du mit "echo" nicht alle Sonderfälle abdecken können.
Back to top
View user's profile Send private message
xraver
Veteran
Veteran


Joined: 20 Aug 2003
Posts: 1083
Location: Halberstadt

PostPosted: Sat May 24, 2008 4:42 pm    Post subject: Reply with quote

Es geht um Komodo. Dort kann ich Commands festlegen.
Ich möchte das der markierte Text an mein Script übergeben wird.
Dort lege ich eben in Komodo das Kommando an das eben %s an myprogramm übergeben wird.
Trage ich da also myprogramm "%s" ein dann setzt Komodo eben den Befehl myprogramm "der_markierte_text" ab.

Wenn in %s eben nun Porgrammiertypische Geschichten wie 'blah' oder ('blah') stehen dann bekommt die Shell das Kotzen.
Back to top
View user's profile Send private message
xraver
Veteran
Veteran


Joined: 20 Aug 2003
Posts: 1083
Location: Halberstadt

PostPosted: Sat May 24, 2008 5:36 pm    Post subject: Reply with quote

Ok, habs eingesehen - mit der Shell kann ich da nix machen.
Hab mir jetzt in python ein macro geschrieben was mir den markierten text in ein File zur weitere Bearbeitung schreibt.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum