编辑test1.sh,输入一下内容:
echo $(mysql -h192.168.100.100 -P3306 -uroot -p1234 sg17_s2 -e 'select uid from base limit 1')
保存执行,能正确输出结果编辑test2.sh 输入一下内容:
rlt="mysql -h192.168.100.100 -P3306 -uroot -p1234 sg17_s2 -e 'select uid from base limit 1'"
echo $($rlt)
保存执行,未能输出正确结果其实test1.sh跟test2.sh的区别就是,我把"mysql -h192.168.100.100 -P3306 -uroot -p1234 sg17_s2 -e 'select uid from base limit 1'"" 这个字符串先赋给一个变量,然后再执行,但结果就不一样哪位大神能解释一下?

解决方案 »

  1.   

    你好,把rlt="mysql -h192.168.100.100 -P3306 -uroot -p1234 sg17_s2 -e 'select uid from base limit 1'"更改为rlt=$(mysql -h192.168.100.100 -P3306 -uroot -p1234 sg17_s2 -e 'select uid from base limit 1')
      

  2.   

    你说的改成这样:
    rlt=$(mysql -h192.168.100.100 -P3306 -uroot -p1234 sg17_s2 -e 'select uid from base limit 1')
      

  3.   

    你说的改成这样:
    rlt=$(mysql -h192.168.100.100 -P3306 -uroot -p1234 sg17_s2 -e 'select uid from base limit 1'),这个我知道,其实就是把$()里面的命令执行完,将结果赋值个rlt.
    但我想的是,先把$()里面的字符串赋值给一个变量,例如:var="mysql -h192.168.100.100 -P3306 -uroot -p1234 sg17_s2 -e 'select uid from base limit 1'" ,然后再执行$($var),但这样就不能正确执行,所以疑惑就在这里。
      

  4.   

    这是因为echo不能实现双重的赋值,如果你想在echo后的内容中使两个变量都生效可以使用 eval echo XXXX
      

  5.   

    eval echo $($rlt)