В конце концов я решился и купил диск, и я рад сообщить, что он у меня заработал.
Если кому-то еще интересно, я запустил:
sudo apt-get install libdvdcss libdvdread4 libdvdnav4
из командной строки. libdvdcss не установился должным образом, но, кажется, это известная проблема, которую можно решить, выполнив:
sudo /usr/share/doc/libdvdread4/install-css.sh
После этого я просто открыл DVD в проигрывателе VLC (который я ранее установил) и вуаля!
Я знаю, что это стандартная процедура для воспроизведения DVD в Linux; однако я отмечаю, что он также работает с Linux на Chromebook через Crouton, потому что по какой-то причине на других форумах много людей говорят, что это не сработает. (Многие, кто не пробовал)
Надеюсь, это поможет прояснить ситуацию для людей, которые задаются вопросом, смогут ли они в будущем смотреть DVD на Chromebook.
#!/bin/ksh
high () echo High
medium () echo Medium
low () echo Low
none () echo None
set -A array low medium none high
for level in high medium low none; do
for elem in "${array[@]}"; do
if [ "$elem" = "$level" ]; then
"$level"
break 2
fi
done
done
Это двойная петля. Внешний цикл проходит по уровням в порядке важности. Внутренний цикл перебирает элементы массива в поисках элемента, равного текущему уровню.
Если найден элемент, соответствующий текущему уровню, вызывается функция с тем же именем, что и у уровня, и происходит выход из двух циклов.
Обратите внимание, что в общем случае вы бы хотели зациклиться на "${array[@]}"
, а не на ${array[*]}
, так как использование[*]
(и оставление расширения без кавычек )приведет как к разбиению слов, так и к подстановке имен файлов в строках в массив. Выражение "${array[@]}"
расширится до отдельных элементов массива array
, заключенных в кавычки.
Избегание разделения слов и подстановки имен файлов также является причиной цитирования $elem
и $level
при их сравнении и т. д.
Возможно, более быстрый способ сделать это — сначала создать ассоциативный массив с элементом из массива в качестве ключей, а затем просто выполнить поиск по ключу в этом:
#!/bin/ksh
high () echo High
medium () echo Medium
low () echo Low
none () echo None
array=( low medium none high )
typeset -A lookup
for elem in "${array[@]}"; do
lookup["$elem"]=1
done
for level in high medium low none; do
if [ -n "${lookup[$level]}" ]; then
"$level"
break
fi
done
Это позволяет избежать двойного цикла, который был бы полезен, если либо массив, либо номер уровня, либо и то, и другое очень длинные.
Я также переключился на более распространенную =(...)
форму присваивания для массивов.