如何在以下脚本中转义字符串以使用变量作为文件名?我什至以适当的方式获取变量吗?
场景是我有几十个小的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": "",
}'