繁体   English   中英

回声变量结果引号BASH

[英]echo variable result in quotes BASH

我有一个这样的bash脚本:

#!/bin/bash
pavadinimas=$1
pavadinimas2=${pavadinimas::-4}
echo "#!/bin/sh
mysql -uUSER -pPASSWORD -DDatabase -e 'UPDATE boom SET count = count + 1 WHERE Failo_vardas="$pavadinimas"';
vlc -f --play-and-exit /var/www/html/uploads/$pavadinimas" > /var/www/html/script/"$pavadinimas2.sh"

我在这条线上有问题:

mysql -uUSER -pPASSWORD -DDatabase -e 'UPDATE boom SET count = count + 1 WHERE Failo_vardas="$pavadinimas"';

如您所见,我想将变量添加到引号中,但是没有It就会出现。 我尝试了多种组合来解决此问题,但失败了。 缺乏经验 :/

脚本结果:

#!/bin/sh

    mysql -uUSER -pPASSWORD -DDatabase -e 'UPDATE boom SET count = parodymai + 1 WHERE Failo_vardas=name.mp4';
    vlc -f --play-and-exit /var/www/html/uploads/gaidys.mp4

我想在引号中回显变量,如下所示:

mysql -uUSER -pPASSWORD -DDatabase -e 'UPDATE boom SET count = count + 1 WHERE Failo_vardas="name.mp4"';

您必须保留单引号,否则您的变量将不会被评估。

因此,请在双引号后插入单引号,然后对变量进行求值,然后在变量后重新插入引号。 单引号结束的地方,您的环境。 变量将被求值,而不是按字面值对待。

演示:

$ pavadinimas=name.mp4

$ echo 'UPDATE boom SET count = count + 1 WHERE Failo_vardas="'$pavadinimas'"';

结果:

UPDATE boom SET count = count + 1 WHERE Failo_vardas="name.mp4"

你真的很亲近 您只需要转义要使用的引号即可。 例如WHERE Failo_vardas=\\"$pavadinimas\\"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM