View previous topic :: View next topic |
Author |
Message |
xraver Veteran


Joined: 20 Aug 2003 Posts: 1083 Location: Halberstadt
|
Posted: Sat May 24, 2008 1:29 pm Post subject: [gelöstScriptmeister gesucht: daten an bash script übergeben |
|
|
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 |
|
 |
manuels Advocate


Joined: 22 Nov 2003 Posts: 2146 Location: Europe
|
|
Back to top |
|
 |
think4urs11 Bodhisattva


Joined: 25 Jun 2003 Posts: 6659 Location: above the cloud
|
Posted: Sat May 24, 2008 2:31 pm Post subject: |
|
|
wozu soll das 'useless use of cat' nützen?
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 |
|
 |
xraver Veteran


Joined: 20 Aug 2003 Posts: 1083 Location: Halberstadt
|
Posted: Sat May 24, 2008 2:42 pm Post subject: |
|
|
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 |
|
 |
xraver Veteran


Joined: 20 Aug 2003 Posts: 1083 Location: Halberstadt
|
Posted: Sat May 24, 2008 2:49 pm Post subject: |
|
|
Think4UrS11 wrote: | wozu soll das 'useless use of cat' nützen?
|
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 |
|
 |
think4urs11 Bodhisattva


Joined: 25 Jun 2003 Posts: 6659 Location: above the cloud
|
Posted: Sat May 24, 2008 3:03 pm Post subject: |
|
|
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 |
|
 |
xraver Veteran


Joined: 20 Aug 2003 Posts: 1083 Location: Halberstadt
|
Posted: Sat May 24, 2008 3:25 pm Post subject: |
|
|
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:
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 |
|
 |
manuels Advocate


Joined: 22 Nov 2003 Posts: 2146 Location: Europe
|
Posted: Sat May 24, 2008 3:43 pm Post subject: |
|
|
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 |
|
 |
xraver Veteran


Joined: 20 Aug 2003 Posts: 1083 Location: Halberstadt
|
Posted: Sat May 24, 2008 3:58 pm Post subject: |
|
|
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 |
|
 |
mv Watchman


Joined: 20 Apr 2005 Posts: 6780
|
Posted: Sat May 24, 2008 4:30 pm Post subject: |
|
|
xraver wrote: | Also sage ich nun dem Programm, hey rufe folgenden befehl auf:
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 |
|
 |
xraver Veteran


Joined: 20 Aug 2003 Posts: 1083 Location: Halberstadt
|
Posted: Sat May 24, 2008 4:42 pm Post subject: |
|
|
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 |
|
 |
xraver Veteran


Joined: 20 Aug 2003 Posts: 1083 Location: Halberstadt
|
Posted: Sat May 24, 2008 5:36 pm Post subject: |
|
|
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 |
|
 |
|