3
我正在寫一個腳本,你可以傳入一個文件名作爲參數,它只會運行,如果它是一個特定的文件擴展名。通過文件擴展名驗證腳本的參數?
flac2mp3 "01 Song.flac"
或
flac2mp3 "01 Song.FLAC"
我知道有很多劇本在那裏向你展示如何FLAC轉換成MP3,但是這是我的劇本,我想學習如何使用編寫腳本這種方法。
這是我可以學習的參數,當我想轉換隻有1個人的文件。 (對於多個文件,我只是寫了一個for循環,內部帶有* .flac)
我只想學習如何檢查$ 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
請和謝謝您的幫助。
謝謝! 因此,內置shopt只是爲了不區分大小寫?我只需要: 如果[[$ 1!= * flac]] 並將其放在雙方括號內? –
看到我編輯的帖子,是的,'如果[[$ 1!= * .flac]]' –
謝謝。我剛剛意識到,shopt的意思是「外殼選項」。我會查找shopt和bash設置。我希望在我正在閱讀的書中提到它。 「Linux命令,編輯器和Shell編程實用指南」 –