Когда я проверяю длину массива всегда 1, я даю больше параметров в командной строке
for i in $*
do
echo $i
conect[$i]=0
done
echo ${#conect}
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
Будет делать это по одному.
Вы должны использовать массив:
for i in "$@"
Новые вопросы
linux
ВОПРОСЫ LINUX ДОЛЖНЫ БЫТЬ ПРОГРАММИРОВАНЫ. Используйте этот тег только в том случае, если ваш вопрос касается программирования с использованием API-интерфейсов Linux или специфичного для Linux поведения, а не только потому, что вы случайно запускаете свой код в Linux. Если вам нужна поддержка Linux, вы можете попробовать https://unix.stackexchange.com или сайт Stack Exchange конкретного дистрибутива Linux, например https://askubuntu.com или https://elementaryos.stackexchange.com/.