Если Вы используете $xxx
синтаксис, затем переменная расширена, и затем результат оценен как арифметическое выражение.
Так,
y=$((${oldvalue[$x]}-${newvalue[$x]}))
Становится
y=$((-4144290000--4009685000))
и ksh
жалуется на это неожиданное --
оператор.
Можно обойти его путем добавления пробелов, как Вы узнали, в этом случае это становится:
y=$((-4144290000 - -4009685000))
Но, Вы могли также записать это:
y=$((oldvalue[$x]-newvalue[$x])))
В этом случае содержание переменной расширено как часть арифметической оценки и в этом случае как одно численное значение.
Другое становится еще более важным в случаях как:
a=1+1 b=2
echo "$((a*b)) vs $(($a*$b))"
Который дает 4 vs 3
, и точки к одной трети и более устойчивый, чем первый способ работать вокруг проблемы:
y=$(((${oldvalue[$x]}) - (${newvalue[$x]})))
Проблема происходит, скорее всего, из-за netctl
не любя дефисы в его файлах профиля.
Извлеките оттуда:
Подсказка: Как упомянуто на форумах, потому что systemd рассматривает дефисы специальным способом, с помощью '-' на имя профиля, может привести к проблемам отбрасывания соединения.
Другая выборка (это имеет значение, только если Вы создали свой файл профиля с wifi-menu -o
):
Предупреждение: Попытка использовать
wifi-menu -o
генерировать файл профиля в/etc/netctl/
с '-' на имя, вероятно, перестанет работать. Переименование файла рекомендуется
Как решение, я предложил бы, чтобы Вы удалили дефис из названия Вашего файла профиля, таким образом, название файла профиля закончится, чтобы быть, например, wirelesshome
или wireless_home
.
После выполнения этого необходимо смочь запустить профиль с netctl start wirelesshome
(или независимо от того, что имя профиля), и затем включите его (если Вы хотите, чтобы оно запустилось при начальной загрузке), с netctl enable wirelesshome
. Кроме того, при включении предыдущего файла профиля прежде не забудьте отключать его прежде, чем включить новый профиль с netctl disable wireless-home
.
Попытайтесь соединиться с wifi-menu
и если Вы заставляете это работать; сохраните конфигурацию с wifi-menu -o
. netctl Wiki
Убедитесь, что у вас правильный интерфейс. Проверьте с помощью
ip link
Процедура, которая часто помогает мне решить некоторые проблемы, это (изменить интерфейс и мой _профиль, чтобы они соответствовали вашим настройкам):
sudo ip link set *interface* down
netctl stop-all
netctl start my_profile