Когда я проверяю длину массива всегда 1, я даю больше параметров в командной строке

for i in $*
do 
echo $i
conect[$i]=0
done

echo ${#conect}
0
clausdia 24 Апр 2017 в 22:04

2 ответа

$ * создать один единственный аргумент, разделенный IFS. вот почему. Используйте $ @

В чем разница между "$ @" и "$ *" в Bash?

< Сильный > Edit На самом деле, как отметили @that_other_guy и @Ruud_Helderman (спасибо вам обоим), то, что я сказал, не совсем верно.

Во-первых, Mea Culpa, так как это не полное решение.

Но это заставило меня задуматься, так что вот правильный путь. Разница в IFS - это факт. Но это имеет значение только если вы цитируете "$ *" или "$ @"

for i in "$*"
do
     echo $i
done

Будет выводить все аргументы в одной строке, тогда как

for i in "$@"
do
     echo $i
done

Будет делать это по одному.

0
Community 23 Май 2017 в 11:46

Вы должны использовать массив:

for i in "$@"
0
Robert Seaman 24 Апр 2017 в 19:08