DVD обычно шифруются, и необходимо установить специальный кодек для чтения их.
apt-get install libdvdcss2
Этот пакет должен добиться цели.
Вам не нужно [[ ... ]]
. Просто перепишите его как:
#!/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
не допустимое выражение. Посмотрите человека для знания то, что является допустимыми выражениями.
Вы используете команду в [[ ]]
оператор, который не имеет никакого смысла. Этот оператор должен использоваться как test
функция для проверки некоторого условия.
Лучше работать read
управляйте отдельно и проверьте, что это - код выхода затем.
#!/bin/bash
read -t 10 -sp "Enter Password: " passwd
if [ $? -eq 0 ]; then
echo -e "\nPassword: ${passwd}"
else
echo -e "\nInput timed out" >&2
exit 1
fi
exit 0
[[ ... ]]
? уверенный – Majid Azimi 19.02.2012, 20:14