Вам не нужно [[ ... ]]
. Просто перепишите его как:
#!/bin/bash
if read -t 10 -sp "Enter Password: " passwd; then
echo -e "\nPassword: ${passwd}"
else
echo -e "\nInput timed out" >&2
exit 1
fi
exit 0
или быть легче читать и/или короче:
#!/bin/bash
read -t 10 -sp "Enter Password: " passwd || echo -e "\nInput timed out" >&2 && exit 1
echo -e "\nPassword: ${passwd}"
exit 0
Обновление:
Понять, почему это работает без [[ ... ]]
, человек удара должен быть проверен:
если список; затем список; [список elif; затем список;]... [еще перечисляют;] fi
Если список выполняется. Если его статус выхода является нулем, тогдашний список выполняется. Иначе каждый список elif выполняется в свою очередь, [...]
В этом случае, if list
команда чтения. [ $? -eq 0 ]
и test $? -eq 0
также действительные списки с определенным статусом выхода. [[ expression ]]
(снова по словам человека удара), также действительный список, но read -t 10 -sp "Enter Password: " passwd
не допустимое выражение. Посмотрите человека для знания то, что является допустимыми выражениями.
В то время как я не смог на самом деле сохранить оба экрана включенными, я могу, по крайней мере, отобразить игры на корректный экран. То, что я сделал, было изменить строку 'метарежима' в xorg.conf
:
Option "metamodes" "CRT: 1280x1024 +1920+180, DFP: nvidia-auto-select +0+0; DFP: 1920x1200, CRT: NULL"
Я не совсем уверен, что делает первая часть, она была автоматически сгенерирована nvidia-settings
. Вторая часть однако дает драйверу команду понимать запрос на 1920x1200 разрешение - родное разрешение моего основного экрана, DFP
- путем отключения вторичного (CRT
).
Те игры, которые были хорошего поведения для начала никогда на самом деле, изменили разрешение для начала, но вместо этого создали полный экран, измерил безграничное окно и поместил его на основной экран.
Править: Это не работает, а также я думал, режим не переключается назад правильно позже.