我想将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等文件。...我在哪里出错了?请帮助
答案 0 :(得分:1)
通配符文件名扩展由外壳执行。在脚本运行时,外壳程序已经将P*mp3
扩展到实际的文件名列表中,因此$1
只是第一个文件名。
使用$*
代替$1
。