0

i currently have to programm a script that takes 3 variables and puts them together in all possible ways. I configured the variables in this way (replaced the actuall "domains" and "front", because i am not sure if i am allowed to reveal them...)

Domains=(".1" ".2" ".3" ".4" ".5")

Front=("1" "2" "3" "4" "5" "6" )

Numbers=({00001..00020})                        

To add the variables together i made this:

STR1="${Front[0]}${Numbers[0]}${Domains[0]}"

I now have the problem that i don't know how i can make a loop that creates all possible combinations.

In the end, all those combinations should be put behind the command "host" in the shell.

And just a question, is it possible to save all the combinations that had an IP-adress in an file? If the answer is yes, i would be very pleased if someone could help me out with that too....

Kind regards Elias

1 Answer 1

1

That seems a lot of brute-force work, but...

First, do you really need the indexes?

for f in "${Front[@]}"; do 
  for n in "${Numbers[@]}"; do 
    for d in "${Domains[@]}"; do
      echo "$f$n$d"
    done
  done
done

If you do actually need the indexes -

for f in "${!Front[@]}"; do 
  for n in "${!Numbers[@]}"; do 
    for d in "${!Domains[@]}"; do
      echo ""${Front[f]}${Numbers[n]}${Domains[d]}""; 
    done; 
  done; 
done

If it's a big dataset, probably nicer to your resources to use counters, though it's a lot more maintenance.

f=0; n=0; d=0;
while (( f < ${#Front[@]} )); do
  while (( n < ${#Numbers[@]} )); do
    while (( d < ${#Domains[@]} )); do
      echo "${Front[f]}${Numbers[n]}${Domains[$((d++))]}";
    done;
    d=0; ((n++));
  done;
  n=0; ((f++))
done
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.