shell echo问题

xj851773277 2018-09-06 12:38:14
编辑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'"" 这个字符串先赋给一个变量,然后再执行,但结果就不一样

哪位大神能解释一下?
...全文
718 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
乌龙普尔 2018-10-14
  • 打赏
  • 举报
回复
eval echo $($rlt)
Professorboy 2018-10-13
  • 打赏
  • 举报
回复
这是因为echo不能实现双重的赋值,如果你想在echo后的内容中使两个变量都生效可以使用 eval echo XXXX
ckc 2018-09-09
  • 打赏
  • 举报
回复
方法应该是可行的,不知道在哪里出了错
你说没得到正确结果,那么得到了什么结果?
李庆海 2018-09-08
  • 打赏
  • 举报
回复
引用 3 楼 xj851773277 的回复:
你说的改成这样: 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),但这样就不能正确执行,所以疑惑就在这里。
--------------------------------- 你好,你的报错提示发出来看下
xj851773277 2018-09-07
  • 打赏
  • 举报
回复
你说的改成这样:
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),但这样就不能正确执行,所以疑惑就在这里。
xj851773277 2018-09-07
  • 打赏
  • 举报
回复
你说的改成这样:
rlt=$(mysql -h192.168.100.100 -P3306 -uroot -p1234 sg17_s2 -e 'select uid from base limit 1')
李庆海 2018-09-06
  • 打赏
  • 举报
回复
你好,把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,161

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 UNIX文化
社区管理员
  • UNIX文化社区
  • 文天大人
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧