set --
» можно установить позиционные параметры (positional parameters). Первый переданный после «--
» параметр будет $1, второй $2, и так далее.Установим в качестве параметров два имени файла — один файл с нотой фа-диез, а другой с ми-бемоль.
set -- "e_flat.wav" "f_sharp.wav"
Кстати, с помощью «
set -- *
» можно задать как позиционные параметры все файлы и папки в текущей директории.Теперь зададим случайное число. Сделать это можно командой shuf.
shuf -i 1-2 -n 1
То есть одно (-n 1) случайное число от 1 до 2 (-i 1-2).
Чтобы использовать в bash результат выполнения команды в качестве значения — если мы хотим его вывести или, как сейчас, записать в переменную — команду достаточно поместить в круглые скобки, поставив перед ними знак доллара ($).
random=$(shuf -i 1-2 -n 1)
Конструкция ${!var} позволяет получить переменную, имя которой содержится в переменной var (bash indirect reference). Если выполнить test=PATH и, затем, echo ${!test} — то отобразится содержимое переменной $PATH.
Таким образом, ${!random} — содержимое переменной, название которой записано в переменную random. А туда в нашем случае записано либо 1, либо 2 — то есть будет отображено содержимое либо переменной $1, либо $2.
Что ж, вот мы всё и написали. Остаётся запустить.
set -- "e_flat.wav" "f_sharp.wav" ; random=$(shuf -i 1-2 -n 1) ; mplayer ${!random}
То есть мы ещё раз убедились, что на bash можно писать очень много разных вещей, и зачастую, если есть какая-то конкретная ситуация, в которой нужно, чтобы компьютер что-то сделал, то bash — идеальный вариант для этого.
Комментариев нет:
Отправить комментарий