Reihenfolge im Funktion

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Reihenfolge im Funktion

Beitrag von latenite » 28.09.2009 02:05:02

Hallo Leute

Wenn ich das hier ausführe:

Code: Alles auswählen

#!/bin/bash

function ask () {
echo "name:"
read name
echo "alter:"
read alter
echo ${name},${alter}
}

csv=`ask`
echo ${csv}
kommt das raus:

Code: Alles auswählen

0:508:root@pendrive /media/disk/subscripts [0]# ./ask.sh 
ersteeingabe
zweiteeingabe
name: alter: ersteeingabe,zweiteeingabe
0:508:root@pendrive /media/disk/subscripts [0]#
aussehen solle es aber so: (erst die "echos" damit man weis wonach gefragt wird)

Code: Alles auswählen

0:508:root@pendrive /media/disk/subscripts [0]# ./ask.sh
name:
ersteeingabe
alter:
zweiteeingabe
ersteeingabe,zweiteeingabe
0:508:root@pendrive /media/disk/subscripts [0]#
warum is das so? :?

chrisbra
Beiträge: 122
Registriert: 19.10.2005 09:36:09
Wohnort: Sachsen-Anhalt
Kontaktdaten:

Re: Reihenfolge im Funktion

Beitrag von chrisbra » 28.09.2009 07:34:35

Du suchst read -p Prompt
Meine Whishlist
:wq!

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Re: Reihenfolge im Funktion

Beitrag von latenite » 28.09.2009 11:56:44

danke das read -p funktioniert.
ABER nur das icha uch was lerne. Warum ging meins nicht? Sieht für mich immernoch logisch aus!?
UND "man sagt" sagt das es so wie du aufzeigst AUCH geht (und ich nutze das jetzt auch) aber bei "read" steht nix dazu das es echos die zuvor kommen "verschluckt". Wieso passiert das?
Danke

Code: Alles auswählen

 read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
              One line is read from the standard input, or from the file descriptor fd supplied as an argument to the -u option, and the first word is assigned to the first name, the second word to the  sec‐
              ond  name,  and  so  on, with leftover words and their intervening separators assigned to the last name.  If there are fewer words read from the input stream than names, the remaining names are
              assigned empty values.  The characters in IFS are used to split the line into words.  The backslash character (\) may be used to remove any special meaning for the next character read  and  for
              line continuation.  Options, if supplied, have the following meanings:
              -a aname
                     The words are assigned to sequential indices of the array variable aname, starting at 0.  aname is unset before any new values are assigned.  Other name arguments are ignored.
              -d delim
                     The first character of delim is used to terminate the input line, rather than newline.
              -e     If  the  standard  input  is  coming from a terminal, readline (see READLINE above) is used to obtain the line.  Readline uses the current (or default, if line editing was not previously
                     active) editing settings.
              -i text
                     If readline is being used to read the line, text is placed into the editing buffer before editing begins.
              -n nchars
                     read returns after reading nchars characters rather than waiting for a complete line of input.
              -p prompt
                     Display prompt on standard error, without a trailing newline, before attempting to read any input.  The prompt is displayed only if input is coming from a terminal.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Reihenfolge im Funktion

Beitrag von rendegast » 28.09.2009 15:26:46

Ich denke, die 'echo' schieben durch die Ausführung in einer Unter-Shell (csv=`...`)
ihre Ausgabe in eine Ausgabe-Queue, die erst abgearbeitet wird, wenn die Funktion durchlaufen ist.

Zusätzlich werden dabei noch die Zeilenschaltungen entfernt, Bsp.:

Code: Alles auswählen

liste="
1
2
3
4
"
echo $liste
wird zu "1 2 3 4"




Wenn noch eine Zeilenschaltung erwünscht ist, dann

Code: Alles auswählen

#!/bin/bash

function ask () {
read -p "Name:
" name
read -p "Alter:
" alter
echo ${name},${alter}
}

csv=`ask`
echo ${csv}
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Re: Reihenfolge im Funktion

Beitrag von latenite » 28.09.2009 21:21:10

hmm ok. danke
ich möchte wetten das ich das mit dem echo und drauf folgendem read schon mal gemacht habe. hmm egal... :D

Antworten