Enkelt menyprogram i terminalen
Postat: 13 jan 2011, 19:27
Jag har snickrat ihop ett enkelt menyprogram som fungerar utmärkt när jag anropar ett program/kommando i terminalen. Däremot så fungerar det inte så bra när jag anropar ett perl-skript. Det verkar som att kommandoradsargumentet inte når perl-skriptet överhuvudtaget, d.v.s. resultatet blir som att kommandot utförs utan argument (hjälptexten dyker upp).
Perl-skriptet körs med två eller fler argument.
Exempel:
Perl-skript [argument 1] [argument 2] osv.
Menyprogram:
Simpelt perl-skrip om ni känner för att testa.
Exempel:
$ skript.pl 6 + 3
$ skript.pl 6 - 3
$ skript.pl 6 \* 3
$ skript.pl 6 / 3
Perl-skript (Calculator):
Perl-skriptet körs med två eller fler argument.
Exempel:
Perl-skript [argument 1] [argument 2] osv.
Menyprogram:
Kod: Markera allt
#!/bin/bash
clear
quit="no"
option1 () {
clear
echo
echo -n "Please input [hostname or IP adress]: "
read input
clear
/usr/sbin/traceroute "$input"
read -p "Press Enter to continue:"
}
while [ $quit != "yes" ]
do
clear
echo
echo "1. Traceroute"
echo "2. Quit"
echo -n "Your choice? : "
read choice
case $choice in
1) option1 ;;
2) quit="yes" ;;
*) echo "\"$choice\" is not a valid option"
sleep 2 ;;
esac
clear
done
Exempel:
$ skript.pl 6 + 3
$ skript.pl 6 - 3
$ skript.pl 6 \* 3
$ skript.pl 6 / 3
Perl-skript (Calculator):
Kod: Markera allt
#!/usr/bin/perl -w
if ($#ARGV != 2 ) {
print "usage: mycalc number1 op number2\neg: mycalc 5 + 3 OR mycalc 5 - 2\n";
exit;
}
$n1=$ARGV[0];
$op=$ARGV[1];
$n2=$ARGV[2];
$ans=0;
if ( $op eq "+" ) {
$ans = $n1 + $n2;
}
elsif ( $op eq "-"){
$ans = $n1 - $n2;
}
elsif ( $op eq "/"){
$ans = $n1 / $n2;
}
elsif ( $op eq "*"){
$ans = $n1 * $n2;
}
else {
print "Error: op must be +, -, *, / only\n";
exit;
}
print "$ans\n";