echo变量结果引用BASH

时间:2016-11-15 13:48:11

标签: 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"';

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

脚本结果:

#!/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"';

2 个答案:

答案 0 :(得分:1)

您必须保留单引号,否则您的变量将无法评估。

因此,在双引号后插入单引号,将变量置于评估状态,并在变量后重新插入引号。单引号结束的地方,你的环境。变量将被评估,而不是按字面意思对待。

演示:

$ 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"

答案 1 :(得分:1)

你真的很亲密。你只需要逃避你想要使用的引号。 例如WHERE Failo_vardas=\"$pavadinimas\"