Этот сценарий оболочки обрабатывает только один файл - PullRequest
0 голосов
/ 25 февраля 2019

Я хотел установить название и метку mp3-файла в качестве имени файла.Например, если audio.mp3 является именем файла, audio следует установить в качестве тегов заголовка и метки.Чтобы обработать все mp3-файлы, начинающиеся с буквы P , я хотел передать P * mp3 в качестве параметра командной строки.Мой сценарий оболочки:

# mp3tag.sh
# Change title and label of mp3 files to file name
# Feb-25-2019

if [ $# -lt 1 ]; then
    echo file name missing. Wild cards OK
    exit 1
fi

for i in $1; do 
    name=`echo $i | sed 's/....$//'` # Remove dot and mp3 from filename
    mp3info -t "$name" -l "$name" "$i"
    if [ $? -eq 0 ]; then
        echo Changed tags for "$i"
    else
        echo Error in changing tags for "$i"
    fi
done

Этот сценарий обрабатывал только первый файл P1.mp3 в каталоге, хотя у меня были такие файлы, как P1.mp3, P2.mp3, .... Где я ошибся?Пожалуйста, помогите

1 Ответ

0 голосов
/ 25 февраля 2019

Расширение имени файла подстановочным знаком выполняется оболочкой.К моменту запуска сценария оболочка уже расширила P*mp3 до фактического списка имен файлов, и поэтому $1 - это только первое имя файла.

Используйте $* вместо $1.

...