For at skrive et script, der kan acceptere input fra enten et filnavnsargument eller fra stdin, kan man benytte sig af en smule logik i scriptet. Der findes ikke en "out of the box" metode, der dækker begge scenarier fuldstændigt, men det er relativt enkelt at implementere. Her er en generel tilgang til, hvordan man kan gøre det i forskellige programmeringssprog:
import sys
def read_input(file=None):
if file:
with open(file, 'r') as f:
return f.read()
else:
return sys.stdin.read()
if __name__ == "__main__":
if len(sys.argv) > 1:
input_data = read_input(sys.argv[1])
else:
input_data = read_input()
print(input_data)
#!/bin/bash
if [ -n "$1" ]; then
cat "$1"
else
cat /dev/stdin
fi
use strict;
use warnings;
my $filename = shift @ARGV;
if ($filename) {
open my $fh, '<', $filename or die "Could not open file '$filename' $!";
while (my $line = <$fh>) {
print $line;
}
close $fh;
} else {
while (my $line = ) {
print $line;
}
}
Ved at følge disse trin kan du nemt skrive et script, der håndterer input fra både et filnavnsargument og stdin.
Spar dig selv for besvær og kom igennem din to-do liste i dag
1
Beskriv din opgave
2
Modtag bud
3
Få løst din opgave
Møbelsamling
Hjælp med at samle Ikea klædeskab
Maler
Klargøring af lejlighed til flyttesyn
Flyttehjælp
Flytning af 150 kvm hus til Roskilde fra København
Havearbejde
Beskæring af 4 større træer
IT support
Geninstallering af windows + programmer
Elektriker
Installation af Sonos musikanlæg i hus
Rengøring
Ugentlig rengøring af lejlighed (114kvm)
Flyttehjælp
Flytning af 150 kvm hus til Roskilde fra København
Elektriker
Opsætning af lamper i stue og soveværelse
Catering
3-retters menu til 14 mennesker