Bash脚本转义命令字符串,以将变量用作文件名

时间:2019-07-10 20:19:29

标签: bash google-cloud-firestore google-cloud-speech

如何在以下脚本中转义字符串以使用变量作为文件名?我什至以适当的方式获取变量吗?

场景是我有几十个小的flac文件的语音消息。它们需要分别与gcloud命令/ URL一起发送,并发送返回值,并将此返回值输出设置为变量。得到返回响应后,我需要使用json文件模式将相同的文件和返回响应发送到数据库。

已编辑:我尝试通过在单引号,双引号和反引号中添加/包装来进行转义。所有返回错误和所有返回错误都显示包含“ $ i”而不是filename.flac的URL。

当我尝试不转义字符串时,出现此错误:

当我不逃避地做的时候,我得到这个:

add2.sh: line 4: syntax error near unexpected token `sudo'
add2.sh: line 4: `      sudo gcloud ml speech recognize `/var/www/html/library/422980-2560-WIN/$i --language-code='en-US' >STT.txt`'

这是脚本:

#!/bin/bash
    cd /var/www/html/library/422980-2560-WIN
    for i in *.flac;
        sudo gcloud ml speech recognize `/var/www/html/library/422980-2560-WIN/"$i" --language-code='en-US' >STT.txt`
    done
    STT=`grep -Po '"transcript": *\K"[^"]*"' STT.txt | cut -d '"' -f2`
    echo $STT
    sudo gsutil cp /var/www/html/library/422980-2560-WIN/"$i".flac gs://422980
    #rm -i -f -- /var/www/html/library/422980-2560-WIN/*.flac
    sudo /usr/local/fuego --credentials /home/repeater/medialunaauth01-280236ff5e5f.json add 422980 '
    {
            "bucketObject": "https://storage.cloud.google.com/$i",
            "fileDay": "filedaytest33",
            "fileMonth": "filemonttest33",
            "fileName": "filenametest33",
            "fileTime": "filetimetest33",
            "fileYear": "fileyeartest33",
            "liveOnline": "0",
            "qCChecked": "0",
            "speechToText":"'"$STT"'",
            "transcribedData": "",
    }'

0 个答案:

没有答案