Количество нот, использующих seqdump на моем миди-контроллере, варьируется.

Да, getopts— это инструмент для анализа параметров в соответствии с POSIX (даже в bash, оболочке GNU):

В:

cmd -abc -dxx -e yy arg -f -g

(с параметром:abcd:e:fg)

-fи -g— обычные аргументы. getoptsостанавливается на этом arg.

Как правило, да:

while getopts...
  case...esac
done
shift "$((OPTIND - 1))"
echo Remaining arguments:
[ "$#" -eq 0 ] || printf ' - %s\n' "$@"

Если вы хотите обрабатывать параметры способом GNU, где параметры рассматриваются после не -аргументов параметров (, за исключением случаев, когда есть --или когда в среде есть POSIXLY _CORRECT ), вы можете использовать реализацию util-linuxили busybox getoptвместо (с другим API ). Этот также поддерживает длинные опции. Однако это не будет переносимо за пределы Linux.

Вы делаете что-то вроде:

parsed_opts=$(getopt -o abcd:e:fg -l long -- "$@") || usage
eval "set -- $parsed_opts"
for o do
  case $o in
    (-[abcfg]) echo "no-arg option: $o"; shift;;
    (--long) echo "long option"; shift;;
    (-[de]) printf '%s\n' "option $o with arg $2"; shift 2;;
    (--) shift; break;;
    (*) echo "never reached";;
  esac
done
echo Remaining args:
[ "$#" -eq 0 ] || printf ' - %s\n' "$@"

Обратите внимание, что их порядок в этих опциях будет -изменен, а их аргументы будут удалены из "оставшихся аргументов":

$ busybox getopt -o abcd:e:fg -l long -- -a foo bar -e x baz --l
 -a -e 'x' --long -- 'foo' 'bar' 'baz'
1
21.10.2019, 11:51
1 ответ

Хорошо, проблема была на самом деле с конфигурацией Launchkey, а не с программным обеспечением. Если вы нажмете обе кнопки Octave одновременно, вы можете изменить смещение ноты, например, чтобы она начиналась с 49, или 50, или 51. Поэтому я настроил ее так, чтобы она начиналась с 50.

0
27.01.2020, 23:59

Теги

Похожие вопросы