для цикла в функции удара

$ OUT=$(bc <<< "2 ^ 256")
$ echo "$OUT"
11579208923731619542357098500868790785326998466564056403945758400791\
3129639936

$ OUT=${OUT//$'\\\n'/}
$ echo "$OUT"
115792089237316195423570985008687907853269984665640564039457584007913129639936
4
28.02.2013, 13:33
1 ответ

x?? расширен во время вызова функции. Таким образом, Ваша функция уже вызвана с xaa xab xac... .

Самый простой путь состоял бы в том, чтобы изменить упорядочивание Ваших параметров:

makeaudiobook () {
count=1
almbumartist=$1
shift
for f in "$@"; do
        preprocess "$f" > "$f"-preprocessed
        text2wave "$f"-preprocessed -o "$f".wav
        lame -b 16 --tt "$f" --ta "$albumartist" --tl "$albumartist" --tn "$count" "$f".wav "$f".mp3
        rm -rf "$f".wav "$f"-preprocessed
        count=$(($count+1))
done
}

(посмотрите, как я поместил " вокруг каждой переменной - это должно предотвратить плохие вещи, если у Вас есть пробел в Ваших именах файлов, что часто происходит со звуковыми файлами),

и назовите его с makeaudiobook haskell x??, т.е. с повернутыми аргументами.

11
27.01.2020, 20:47
  • 1
    это работает!работает! –  ixtmixilix 28.02.2013, 11:07
  • 2
    : in "$@" избыточно. for <...>; do циклами по умолчанию по массиву параметров. –  l0b0 28.02.2013, 12:23
  • 3
    @l0b0 (просто забыл о том), но по моему скромному мнению явный лучше, чем неявный. –  glglgl 28.02.2013, 12:51

Теги

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