2016-07-05 60 views
0

我一直在试图创建一个脚本来使用ffmpeg的网站下载的文件,它工作得很好,直到它得到的文件名,代码是这样:ffmpeg的不采取对文件名变量在bash

echo "Hello, this is the basic script to download videos. This requires ffmpeg to be installed, do you want to start? (Y/N)" 
read start_input 
if [ $start_input = Y ] || [ $start_input = y ] 
then 
    echo "[Text]" 
    read video_link 
    echo "Now I need what quality you want the video to be (240, 360, 480, 720, 1080, Default: 720)" 
    read quality_link 
    if [ -z $quality_link ] 
    then 
     $quality_link = "720" 
    fi 

    echo "Now name the new file (Note, it will have a .ts extention)" 

    read $new_file 
    echo "And where would you like it to be placed?" 
    read $folder_location 
    $file="${folder_location}/${new_file}.ts" 
    ffmpeg -i "[url]" -c:v copy -c:a copy -f mpegts $file 
else 
    exit 0 
fi 
exit 0 

问题是什么时候使用$ file变量,ffmpeg没有使用它,变量被完全忽略,我尝试了许多不同的方法,但他们不工作(单引号,双引号,使用$ {file}) , 我能做什么?

+4

欢迎使用stackoverflow!给[shellcheck](http://shellcheck.net)一个尝试 - 在这种情况下它说“不要在作业左侧使用$”。还有其他一些建议。 –

+0

您可以使用'-c copy'而不是'-c:v copy -c:a copy'来保存几位数据。 – LordNeckbeard

+0

其他人,我已经试过这个,但它不起作用,我试过用斜线分隔的原始输入,它试图写/所以这不是问题 – 2haloes

回答

2

要assing给一个变量在bash,请使用以下语法:

var=value 
var1=$var2 

在左侧没有美元符号,围绕=标志没有空格。

+0

这是误导性陈述。这意味着'a = $ b'是错误的,因为'$'在'='符号的周围。 – alvits

+0

正如在上面的评论中所说的那样,即使做出这样的改变,这也不是问题,ffmpeg在工作中没有区别 – 2haloes

+0

@ 2haloes:也从'read $ variable'中删除美元符号。 – choroba