2016-11-03 2 views
0

Ich habe gerade angefangen von wenigen Tagen einige Bash-Skript zu tun ich, wenn ich keine Ausgabe bekommen hier mir dieses Bash-Skript im Terminal laufen bitte korrigieren:Noobie in Bash Scripting

Code:

#!/bin/bash 
echo "Usage:" 
echo -n "Please enter t/n" 
read o 
echo -n "IP" 
read ip 
traceroute() { 
    traceroute $ip 
} 
nmap() { 
    nmap -T4 -A -v $ip 
} 
if [[ "$o" = "t" ]] 
then 
    traceroute 
elif [[ "$o" = "n" ]] 
then 
    nmap 
else 
    echo "Usage:" 
    echo "Please enter t/n" 
    exit 1 
fi 
+2

Sie erhalten nicht einmal _Usage: _? – FDavidov

+1

Können Sie beschreiben, wie Sie dieses Skript ausführen, welche Zugriffsrechte und welche Ausgabe erhalten Sie beim Ausführen des Skripts? – Kamil

+1

auch, ich glaube nicht, dass Sie eigentlich '/ n' schreiben wollten, sondern' \ n' (das richtige Symbol für Zeilenumbrüche) – Aserre

Antwort

1

Du hast eine Endlosschleife gemacht. Wählen Sie eine Lösung (erste ist bevorzugt)

  • nicht traceroute und nmap als Funktionsnamen verwenden verwenden
  • den vollständigen Pfad der /usr/bin/traceroute und /usr/bin/nmap
+0

Danke die erste Lösung funktioniert für mich –

0

Das Bit unmittelbar nach ‚lesen ip‘ ist nicht nötig, da es eigentlich gar nichts macht (soweit ich das beurteilen kann).

#!/bin/bash 
echo "Usage:" 
echo -n "Please enter t/n" 
read o 
echo -n "IP" 
read ip 
if [[ "$o" = "t" ]] 
then 
    traceroute $ip 
elif [[ "$o" = "n" ]] 
then 
    nmap -T4 -A -v $ip 
else 
    echo "Usage:" 
    echo "Please enter t/n" 
    exit 1 
fi 

Die oben geänderten Code funktioniert, konnte aber mit einigen Formatierung tun, um es ein wenig schöner aussehen zu lassen.