Harry Rüter
Leider funzt das nicht :
---schnipp--- [PTS11] harry@486dx66:/opt/mailtst #./sscanf line XYZ [PTS11] root@486dx66:/opt/mailtst # echo $line
[PTS11] root@486dx66:/opt/mailtst # ---schnipp---
So und jetzt die Frage an die Liste, wie kriege ich die führenden Leerzeichen in die Variable line ?
Ein Prozess hat immer seine eigene Umgebung. Variablen, die in dieser Umgebung gesetzt werden, können *nur* an Kindprozesse weitergegeben werden. Ein Prozess kann *nie* direkt Umgebungsvariablen der aufrufenden Shell setzen, dazu sind Umwege nötig. Wenn du z.B. das Programm so ändern würdest: int main(int argc,char** argv) { char tmp[LEN]; char res[2048]; char *p; int len; fgets(tmp,LEN,stdin); len = strlen(tmp); if (len > 0) tmp[len-1] = 0; printf("%s=\"%s\"\n",argv[1],tmp); return 0; } Und es dann so ausführst: eval `sscanf line` kannst du die Variable in der aufrufenden Shell setzen. Allerdings hast du dann immer noch das Problem, dass die bash führende Leerzeichen schluckt. Philipp PS: Diese Frage hätte eigentlich auf suse-programing gehört, denn genau für solche Themen wurde sie ins Leben gerufen.