Es gibt mehrere Ansätze, um Faktoren in einem Unix -Shell -Skript zu finden. Hier sind zwei, eine, die `seq` und` bc` (tragbarer) und eine andere nutzende Bashs arithmetische Funktionen (etwas schneller, aber weniger tragbar) verwendet werden:
Methode 1:Verwenden von `seq`,` bc` und `grep` (tragbarer)
Diese Methode ist sehr tragbar, da sie auf Standard -UNIX -Versorgungsunternehmen beruht.
`` `bash
#!/bin/bash
Eingabe vom Benutzer
erhalten
Lesen -p "Geben Sie eine Nummer ein:" Num
Fehlerbehandlung für nicht positive Eingabe
if ((num <=0)); Dann
Echo "Bitte geben Sie eine positive Ganzzahl ein."
Ausgang 1
fi
generieren Sie Zahlen von 1 nach num
seq 1 $ num | Während des Lesens I; Tun
# Verwenden Sie BC, um den Modulo -Betrieb durchzuführen. Dies behandelt große Zahlen.
if (($ (echo "$ num % $ i" | bc) ==0)); Dann
echo "$ ich"
fi
Erledigt
`` `
Dieses Skript fordert den Benutzer zunächst für eine Nummer auf. Anschließend wird "seq`" verwendet, um eine Abfolge von Zahlen von 1 zur Eingabennummer zu generieren. Das "while" -Sloop durch jede Zahl und `bc` berechnet das Modulo. Wenn das Modulo 0 ist, ist die Zahl ein Faktor und wird gedruckt.
Methode 2:Verwenden von Bash -Arithmetik (weniger tragbar, etwas schneller)
Diese Methode nutzt die integrierten arithmetischen Funktionen von Bash und macht sie für kleinere Zahlen etwas schneller, aber es ist möglicherweise nicht so tragbar wie die BC`-Methode.
`` `bash
#!/bin/bash
Eingabe vom Benutzer
erhalten
Lesen -p "Geben Sie eine Nummer ein:" Num
Fehlerbehandlung für nicht positive Eingabe
if ((num <=0)); Dann
Echo "Bitte geben Sie eine positive Ganzzahl ein."
Ausgang 1
fi
durch Zahlen von 1 bis num
durchzusetzen
für ((i =1; i <=num; i ++)); Tun
# Überprüfen Sie, ob ich ein Faktor mit dem Modulo -Operator ist
if ((num % i ==0)); Dann
echo "$ ich"
fi
Erledigt
`` `
Dieses Skript ähnelt dem ersten, verwendet jedoch Bashs integrierte arithmetische Erweiterung `((...)) für den Modulo-Betrieb, wodurch der externe Aufruf nach` bc` vermieden wird.
wie man rennt:
1. Speichern Sie eines der eines Skripts in einer Datei (z. B. `find_factors.sh`).
2. Machen Sie das Skript ausführbar:`chmod +x find_factors.sh`
3. Führen Sie das Skript aus:`./Find_factors.sh`
Beispielausgabe (für Eingabe 12):
`` `
1
2
3
4
6
12
`` `
Denken Sie daran, die Methode auszuwählen, die Ihren Anforderungen und den Systemen am besten entspricht, auf denen Sie sie ausführen. Die erste Methode (unter Verwendung von `bc`) wird im Allgemeinen für ihre breitere Kompatibilität empfohlen. Die zweite ist für kleinere Zahlen auf Systemen schneller, in denen die Arithmetik von Bash optimiert wird.