此Shell脚本仅处理一个文件

时间:2019-02-25 17:00:17

标签: shell unix tags mp3

我想将mp3文件的标题和标签设置为文件名。例如,如果 audio.mp3 是文件名,则应将 audio 设置为标题和标签标签。要处理所有以字母 P 开头的mp3文件,我想传递 P * mp3 作为命令行参数。我的shell脚本是:

# 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 :(得分:1)

通配符文件名扩展由外壳执行。在脚本运行时,外壳程序已经将P*mp3扩展到实际的文件名列表中,因此$1只是第一个文件名。

使用$*代替$1