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.
Har du brug for hjælp til scripting og programmering? Med Handyhand kan du nemt oprette din opgave helt gratis. På få minutter vil du modtage bud fra dygtige freelancere, der står klar til at hjælpe dig med dine projekter. Få den støtte, du har brug for, og kom hurtigt videre med dit arbejde!