【发布时间】:2012-09-29 18:25:28
【问题描述】:
我正在编写一个脚本,您可以将文件名作为参数传递给它,并且它只会在具有特定文件扩展名的情况下运行。
flac2mp3 "01 Song.flac"
或
flac2mp3 "01 Song.FLAC"
我知道那里有很多脚本向您展示如何将 flac 转换为 mp3,但这是我的脚本,我想学习如何使用这种方法编写脚本。
这样我就可以学习参数以及当我想只转换 1 个单独的文件时。 (对于多个文件,我只是在脚本中使用 *.flac 编写了一个 for 循环)
我只是想学习如何检查 $1 参数是否包含 *.[Ff][Ll][Aa][Cc]
这是我到目前为止从互联网上拼凑出来的(我知道这是令人尴尬的错误,但我想展示我的目标):
#!/bin/bash
#flac2mp3
if [ -z $1 ] && [[$1 !=~ *.[Ff][Ll][Aa][Cc]]];then echo "Give FLAC File Name"; exit 0;fi
OUTF=${1%.flac}.mp3
ARTIST=$(metaflac "$1" --show-tag=ARTIST | sed s/.*=//g)
TITLE=$(metaflac "$1" --show-tag=TITLE | sed s/.*=//g)
ALBUM=$(metaflac "$1" --show-tag=ALBUM | sed s/.*=//g)
GENRE=$(metaflac "$1" --show-tag=GENRE | sed s/.*=//g)
TRACKNUMBER=$(metaflac "$1" --show-tag=TRACKNUMBER | sed s/.*=//g)
DATE=$(metaflac "$1" --show-tag=DATE | sed s/.*=//g)
flac -c -d "$1" | lame -m j -q 0 --vbr-new -V 0 -s 44.1 - "$OUTF"
id3 -t "$TITLE" -T "${TRACKNUMBER:-0}" -a "$ARTIST" -A "$ALBUM" -y "$DATE" -g "${GENRE:-12}" "$OUTF"
done
请并感谢您的帮助。
【问题讨论】:
标签: linux validation shell arguments