Функциональная вызывающая сторона позиционные параметры

mp3info программа только пишет теги ID3 v1. Android начал выглядеть на просто теги v2. Необходимо использовать id3v2 программа для записи тегов из командной строки, которая будет распознана в большинстве современных систем.

Для музыкального теггера GUI я рекомендую EasyTAG.

Кроме того, grip разорвет аудио компакт-диск к mp3 и запишет теги с помощью cddb данные, которые работают над Android все на одном шаге. Существуют другие программы разрыва к, который просто, оказывается, тот, который я использую и знаю, что он работает.

6
12.10.2012, 19:18
2 ответа

Функция не может влиять на позиционные параметры своей вызывающей стороны. Это дизайном: позиционные параметры предназначены, чтобы быть частными к функции.

Сделайте свою функциональную работу над массивом.

myfunction () {
  local _myfunction_arrayname=$1
  shift
  … # work on the positional parameters
  eval "$_myfunction_arrayname=(\"\$@\")"
}
myfunction foo "$@"
set -- "${foo[@]}"

В ksh93 и ударе, существует окольный способ сделать что-то приближающееся путем объединения псевдонима и . (source) встроенный с заменой процесса. Пример.

alias myfunction='. <(echo myfunction_body \"\$@\"; echo set -- "\"\${new_positional_parameters[@]}\"")'

Поместите суть работы функции в myfunction_body и заставьте его установить массив new_positional_parameters. После вызова к myfunction, позиционные параметры устанавливаются на значения это myfunction_body вставляет new_positional_parameters.

2
27.01.2020, 20:30

Вот некоторый код который циклы через параметры, обновляя каждого из них по мере необходимости. В этом случае замена дубликата режет с единственным:

for param
do
    param="$(printf %s. "$1" | tr -s "/")"
    set -- "$@" "${param%.}"
    shift
done
0
27.01.2020, 20:30
  • 1
    От вопроса о теме, но почему нет set -- "${@//\/+(\/)//}" вместо всего это? (Обратите внимание, что это требует shopt -s extglob, который является прочь по умолчанию для неинтерактивных оболочек.) –  manatwork 17.10.2012, 13:06
  • 2
    @manatwork Хорошая острота для этой определенной ситуации. Это - просто (подробная) демонстрация того, как сделать произвольную модификацию к параметрам. –  l0b0 17.10.2012, 13:46

Теги

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