|
|
|
|
Google Site
|
|||||||
| Forum | Registrera | Blogg | Manualsidor | Forum Regler | Länkar | Album | FAQ | Användare | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här. |
![]() |
|
|
Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|||
|
Nonblocking I / O i bash-skript
Hej, Finns det något sätt att utföra nonblocking I / O läser från standard in i ett bash-script? Till exempel i C, kan du säga: Kod:
int flags = fcntl(STDIN_FILENO, F_GETFL); fcntl(STDIN_FILENO, F_SETFL, flags | O_NONBLOCK); ch = fgetc(stdin); den "fgetc" funktionen kommer inte att spärra på standard input men kommer att försöka läsa och återvända lm \u003d -1 om det inte fanns någon input väntar. Bash har inbyggda "stå"-kommando som hänger på stdin tills den kan läsa några tecken (eller tills den tiden ute, om du ställer in den för att läsa med t-alternativet), men det verkar inte finnas något egentligt sätt att efterlikna C beteende som beskrivs ovan. Finns det? Tack, Neked |
| Sponsrade länkar |
|
|
|
|||
|
Pretty damn cool cfajohnson. Här är mitt genomförande baserat på din stty idé och några ändringar: Kod:
#!/bin/bash
if [ -t 0 ]; then
stty -echo -icanon time 0 min 0
fi;
read line
echo "The input was, if any: " $line
if [ -t 0 ]; then
stty sane
fi;om detta nummer har sparats i ett namn körbar test.sh, då kan du göra följande: Kod:
bash$ ./test.sh The input was, if any: bash$ echo "test" | ./test.sh The input was, if any: test Anledningen till att jag använder if [-t 0]; uppgift är att se till att standard input kommer från terminalen, inte en pipa, annars får du irriterande fel: Kod:
stty: standard input: Invalid argument |
|
|||
|
Tyvärr har ingen av ovanstående metoder fungerar inte en terminal eller en pipa är närvarande, så om du har den nämnda test.sh på en avlägsen maskin, sedan: Kod:
bash$ echo "test" | ssh remote_machine ./test.sh test bash$ ssh -t remote_machine ./test.sh <== using -t flag to force terminal creation bash$ ssh remote_machine ./test.sh <== it blocks here on the read |
| Sponsrade länkar | ||
|
|
![]() |
| Komihåglista |
| Thread Tools | Sök i denna tråd |
| Visningslägen | Betygsätt denna tråd |
|
|
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| Bash: Kapslad funktioner och även andra skript | FractalizeR | Shell-programmering och Skript | 12 | 08-26-2008 12:15 |
| Fråga Linux.com: IT, japanska och utforma större och bättre bash skript | Linux Bot | UNIX och Linux RSS Nyheter | 0 | 07-12-2008 10:20 |
| Bash Skript - Arkiv generera | JayC89 | Shell-programmering och Skript | 1 | 10-04-2007 10:58 |
| Hur pass lösenord till bash skript? | Siegfried | Shell-programmering och Skript | 5 | 08-04-2006 06:59 |
| Bash Shell Scripts | sonbag_pspl | UNIX for Dummies Frågor & Svar | 2 | 08-27-2004 02:31 |