Det finns flera tillvägagångssätt för att hitta faktorer i ett UNIX -skalskript. Här är två, en som använder "seq" och "bc" (mer bärbar) och en annan utnyttjande bashs aritmetiska kapacitet (något snabbare men mindre bärbara):
Metod 1:Använda `seq`,` bc` och `grep` (mer bärbar)
Denna metod är mycket bärbar eftersom den förlitar sig på standard UNIX -verktyg.
`` `bash
#!/bin/bash
Få inmatning från användaren
Läs -p "Ange ett nummer:" Num
felhantering för icke-positiv ingång
if ((num <=0)); sedan
Echo "Ange ett positivt heltal."
avfart 1
fi
generera siffror från 1 till num
SEQ 1 $ NUM | medan du läst i; do
# Använd BC för att utföra Modulo -drift. Detta hanterar stort antal.
if (($ (echo "$ num % $ i" | bc) ==0)); sedan
echo "$ i"
fi
gjort
`` `
Detta skript uppmanar först användaren för ett nummer. Den använder sedan "seq" för att generera en sekvens av siffror från 1 till ingångsnumret. "Medan" -slingan itereras genom varje nummer och "BC" beräknar modulo. Om modulo är 0 är numret en faktor och skrivs ut.
Metod 2:Använda bash aritmetik (mindre bärbar, något snabbare)
Denna metod utnyttjar bashs inbyggda aritmetiska kapacitet, vilket gör det något snabbare för mindre antal, men den kanske inte är lika bärbar som metoden "BC".
`` `bash
#!/bin/bash
Få inmatning från användaren
Läs -p "Ange ett nummer:" Num
felhantering för icke-positiv ingång
if ((num <=0)); sedan
Echo "Ange ett positivt heltal."
avfart 1
fi
iterera genom siffror från 1 till num
för ((i =1; i <=num; i ++)); do
# Kontrollera om jag är en faktor som använder Modulo -operatör
if ((num % i ==0)); sedan
echo "$ i"
fi
gjort
`` `
Det här skriptet liknar det första, men använder Bashs inbyggda aritmetisk expansion `((...))` för Modulo-operationen och undviker det externa samtalet till `BC '.
Hur man kör:
1. Spara antingen skript i en fil (t.ex. `find_factors.sh`).
2. Gör skriptet körbart:`chmod +x find_factors.sh`
3. Kör skriptet:`./Find_factors.sh`
Exempelutgång (för ingång 12):
`` `
1
2
3
4
6
12
`` `
Kom ihåg att välja den metod som bäst passar dina behov och de system du kommer att köra den på. Den första metoden (med användning av "BC") rekommenderas vanligtvis för dess bredare kompatibilitet. Den andra är snabbare för mindre antal på system där Bashs aritmetik är optimerad.