linux bash脚本看看哪错了 20C

代码:
#!/bin/bash

FFMPEG_BIN="ffmpeg-4.2.2/ffmpeg"
MUSIC_PATH="music"

if [[ -d ${MUSIC_PATH} ]]; then
echo "MUSIC_PATH exists."
flac_files=find ${MUSIC_PATH} -name "FLAC1_*.flac"
if [[ -z "${flac_files}" ]]; then
echo "No flac files in directory ${MUSIC_PATH}"
exit
fi
echo "Start to convert flac format to mp3 format"
for input_file in ${flac_files}
do
output_file=${input_file/flac/mp3}
echo -e "\n${input_file} ==> ${output_file}"
${FFMPEG_BIN} -i "$input_file" -ab 320k -map_metadata 0 "${output_file}"
done
else
echo "MUSIC_PATH doesn't exist."
fi


输出结果:
MUSIC_PATH exists.
No flac files in directory music

大佬们看看哪错了上面一部分代码可以执行主要是下面一部分执行不了。或者重新帮忙写段代码(谢谢!)
问题是:

用vim写个bash脚本,判断某个文件是否存在,如果存在,调用ffmpeg将文件夹下以FLAC1_ 开头的扩展名为.flac的文件转换为mp3格式

10个回答

直接在终端测试一下这个语句啊,
find ${MUSIC_PATH} -name "FLAC1_*.flac"

看看这个语句的输出,这个path先手动写好,如果直接执行都没有结果就是这句有问题了

sunsloth
sunsloth 回复qq_41711757: flac_files=find ${MUSIC_PATH} -name "FLAC1_*.flac"这一句没有执行,需要改为flac_files=·find ${MUSIC_PATH} -name "FLAC1_*.flac"· ,执行后赋值给变量就可以了,测试成功。前后的符号是tab键上边那个。
一年多之前 回复
sunsloth
sunsloth 回复qq_41711757: flac_files=find ${MUSIC_PATH} -name "FLAC1_*.flac"
一年多之前 回复
qq_41711757
qq_41711757 输出结果是./key/FLAC1_1.flac
一年多之前 回复

music路径问题吧,试试./music

xcgh
xcgh find ${MUSIC_PATH} -name "FLAC1_*.flac"这个命令替换完执行一下,看看是否好使
一年多之前 回复
qq_41711757
qq_41711757 试过了不是路径的问题改了之后还算一样
一年多之前 回复

#!/bin/bash

MUSIC_PATH="/opt/test"

if [[ -d ${MUSIC_PATH} ]]; then
echo "MUSIC_PATH exists."
flac_files=find ${MUSIC_PATH} -name "file*"
if [[ -z "${flac_files}" ]]; then
echo "null"
fi
fi

输出结果
[root@localhost test]# sh test.sh
MUSIC_PATH exists.
[root@localhost test]# vi test.sh

sunsloth
sunsloth 回复qq_41711757: MUSIC_PATH exists. No flac files in directory music,你这个输出就证明进了这个分支了,这就有问题了,走不到后边的。还有就是你的输出结果怎么可能是./key/FLAC1_1.flac这个呢。。。你这个sh文件放在什么目录。。。
一年多之前 回复
qq_41711757
qq_41711757 主要是后面的转换mp3格式前面的因该是对的有输出就是后面那个没输出
一年多之前 回复

反引号没显示出来:
图片说明

xjw_87
xjw_87 回复qq_41711757: 那你脚本原本应该没问题的,确定flac文件是在music目录下?试试MUSIC_PATH="key"呢?
一年多之前 回复
qq_41711757
qq_41711757 改了之后还是以前的那个结果
一年多之前 回复

图片说明

qq_41711757
qq_41711757 这是详细代码你们看看
一年多之前 回复

在线急等如果有用马上采纳给C币

终端命令上只有这个
MUSIC_PATH exists.
No flac files in directory music

find ${MUSIC_PATH} -name "FLAC1_*.flac" 改为·find ${MUSIC_PATH} -name "FLAC1_*.flac"·

把flac_files=find ${MUSIC_PATH} -name "FLAC1_*.flac"改成flac_files=$(find ${MUSIC_PATH} -name "FLAC1_*.flac")或者flac_files=find ${MUSIC_PATH} -name "FLAC1_*.flac",这样才是执行find命令取文件查找结果,否则是执行music -name "FLAC1_*.flac"命令,同时把flac_files=find也作为参数传给这个命令

find那句不是单引号,是上句号,键盘最左边的波浪线的那个键盘。
示例代码如下图:
图片说明
运行结果
MUSIC_PATH exists.
music/FLAC1_1.flac music/FLAC1_2.flac

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!