Ваш сегмент ["$1"
создает одиночное слово, начинающееся с [
и заканчивающееся тем, что вы передали в качестве первого аргумента.Поскольку это не одна из встроенных команд bash (например, [
), он пытается запустить ее как команду и завершается неудачно:
./pingsweep.sh: line 2: [192.168.199.182: command not found
^^^^^^^^^^^^^^^^
|
+--> see *especially* this first character.
Вам нужен пробел между [
и переменной, и передзакрытие ]
также.Даже если это не было необходимым для синтаксиса, это потребовалось бы для моих чувствительности ОКР: -)
if [ "$1" == "" ]
Кроме того, команда for ip in 'seq 1 254'
(обратите внимание на одинарные кавычки) будетВыполните итерацию по одной строке seq 1 254
, , а не , запустите команду и выполните итерацию по ее выводу.Для этого вам нужно использовать обратные кавычки (`
), а не кавычки, или мои предпочтения, поскольку их легче вкладывать:
for ip in $(seq 1 254)
Но вы должны иметь в виду, что bash
на самом деле имеет приличныйпетли без необходимости прибегать к seq
:
for (( ip=1; ip<10; ip++ )); do echo $ip; done