Сценарий Bubble Sort Bash

используете ли вы карту Nvidia с настройкой с двойным экраном?

Если это так, у меня была такая же проблема, и она была решена следующим образом: выключите компьютер, отключите второй монитор, переключите снова включите компьютер, запустите «sudo nvidia-settings», подключите второй монитор, запустите «Обнаруживать дисплеи» в графическом интерфейсе Nvidia и внесите необходимые настройки перед сохранением настроек. Важным моментом является то, что на экране, который вы хотите, чтобы войти в систему был установлен на «Номер экрана: 0».

В моем случае, оставив второй монитор подключенным до запуска 'nvidia-settings' оставил его как экран 0 по какой-то причине, но, подключив его после, это было отсортировано.

0
задан 22 June 2017 в 08:06

1 ответ

Вы делаете i <= ${#nums[@]}. Массивы в bash индексируются 0, как вы уже знаете, поэтому последний элемент находится в ${#nums[@]} - 1. Когда i является ${#nums[@]}, и вы делаете nums[$i]=${nums[$j]} или nums[$j]=$t, вы добавляете после конца массива, увеличивая размер массива и тем самым создавая бесконечный цикл.

Ошибки вы видите, также из-за этого, но поскольку назначение еще не выполнено, ${array[non-existent index]} просто пуст. Рассмотрим выход в bash -x:

+ (( j++ )) # j is 8 + (( j<=8 )) # perfectly fine + '[' 4 -gt ']' # but nums[j] is empty ./foo.sh: line 9: [: 4: unary operator expected + (( j++ )) + (( j<=8 )) + (( i++ )) + (( i<=8 )) + (( j=0 )) + (( j<=8 )) + '[' 89 -gt 4 ']' + t=89 + nums[$i]=4 + nums[$j]=89 + (( j++ )) + (( j<=8 )) + '[' 4 -gt 4 ']' + (( j++ )) + (( j<=8 )) + '[' 4 -gt 62 ']' + (( j++ )) + (( j<=8 )) + '[' 4 -gt 75 ']' + (( j++ )) + (( j<=8 ))

Это продолжается до тех пор, пока выражение не будет [ -gt ]. С помощью одного аргумента тест предназначен только для непустого аргумента, поэтому это происходит успешно, выполняются назначения и начинаются бесконечные циклы.

Do:

Всегда указывайте свои переменные.

Не:

Всегда указывайте свои переменные.
2
ответ дан 24 July 2018 в 19:45

Другие вопросы по тегам:

Похожие вопросы: