Как мне заставить этот скрипт терминала работать должным образом?


-1

Я хочу, чтобы он выглядел так, как будто я связывался с кучей IP-адресов, и он прекрасно работает до третьей строки в коде, и я хочу иметь возможность это исправить. Также 4 нижние строки не работают.

Так что это в основном то, что я получил до сих пор:

for((i=0;i<=100000000;i++)); 
    do echo "Request #" $i " returned ip-adress " [$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256))];
  if["$i" = "100000000"]
    do echo "All ip-adresses have been stored in local hard drive." -$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256));
  if["$i" = "100000000"]
    do echo [Process Completed];
done

2
Что ты вообще пытаешься сделать? Это ничего не хранит на жестком диске, как есть. Простое изречение исправить этот сценарий для меня не сработает, если никто не сможет догадаться, чего вы пытаетесь достичь.
Тайсон

Ответы:


1

Два вопроса:

  1. Вам нужно пробел между «if [» и «[ числовая оценка ]» для правильного выполнения.

  2. Логический синтаксис неверен. if х ; then(и только потом) у ; else z ; fi; done, Elseне является обязательным, но вы не можете объявить два одинаковых ifутверждения следующим образом:

    • if х , then у .
    • if х , then з .

Это не имеет никакого логического смысла. С другой стороны:

  • if х , then у & г делает.

Тем не менее, вот что вы ищете:

#! /bin/bash

for((i=0;i<=100000000;i++)); 
    do echo "Request #" $i " returned ip-adress “[ $((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256)) ];
if [ "$i" = "100000000" ];
    then echo "All ip-adresses have been stored in local hard drive." -$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256)) && echo [Process Completed];
fi
done

Который при сохранении в виде скрипта test.shвозвращает следующее:

MacBook-Pro:~ njboot$ test.sh
Request # 0  returned ip-adress  [ 0.84.37.68 ]
Request # 1  returned ip-adress  [ 169.181.247.217 ]
Request # 2  returned ip-adress  [ 164.183.119.15 ]
Request # 3  returned ip-adress  [ 191.149.177.224 ]
Request # 4  returned ip-adress  [ 84.28.26.92 ]
Request # 5  returned ip-adress  [ 54.38.89.138 ]
Request # 6  returned ip-adress  [ 86.222.217.2 ]
Request # 7  returned ip-adress  [ 57.178.16.75 ]
Request # 8  returned ip-adress  [ 26.22.140.245 ]
Request # 9  returned ip-adress  [ 222.255.194.118 ]
Request # 10  returned ip-adress  [ 188.26.150.197 ]

Request # 100000000 returned ip-adress  [ 233.66.114.134 ]
All ip-adresses have been stored in local hard drive. -181.167.202.102
[Process Completed]

0

Не знаю, чего вы здесь пытаетесь достичь, но делать тест на условие выхода, оставаясь внутри цикла, не обязательно:

for ((i=0;i<=100000000;i++)); do
    echo "Request #$i returned ip-adress" [$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256))]
done

echo "All ip-adresses have been stored in local hard drive."
echo "[Process Completed]"

Синтаксис if ... then ... else(если вам это нужно для чего-то другого) на самом деле

if [ $i -eq 100000000 ]; then
    echo "Got a match!"
fi
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.