Bash-Skript wartet nicht auf Lesen

8

Ich versuche, Befehle als ein anderer Benutzer auszuführen und die Eingabe als diesen Benutzer zu lesen. Aus irgendeinem Grund pausiert das Skript nicht auf dem read -Befehl, ich bin mir nicht sicher, warum. Hier ist ein Beispiel für das Skript:

%Vor%

Irgendwelche Ideen, warum dies nicht auf read name oder read email ?

stoppt     
alukach 09.08.2012, 22:12
quelle

2 Antworten

20

read liest von stdin, und bash erbt seine stdin von sudo, das vom heredoc kommt. Wenn Sie möchten, dass es von woanders kommt, müssen Sie explizit sein. Zum Beispiel:

%Vor%

Dies funktioniert jedoch nicht mit sudo, da sudo die nicht standardmäßigen Dateideskriptoren schließt. Aber sudo schließt stderr nicht. Wenn Sie also diesen Dateideskriptor wiederverwenden können, können Sie Folgendes tun:

%Vor%

Aber es ist wahrscheinlich viel sicherer zu tun:

%Vor%     
William Pursell 09.08.2012, 22:29
quelle
0

Kannst du dieses Skript überprüfen, ob es als sudo läuft, und wenn nicht, exec selbst mit sudo?

%Vor%     
thelazyenginerd 09.08.2012 22:36
quelle

Tags und Links