首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何执行存储为带引号和星号的字符串的bash命令

问如何执行存储为带引号和星号的字符串的bash命令
EN

Stack Overflow用户
提问于 2010-01-05 17:55:05
回答 4查看 331.1K关注 0票数 304

我尝试执行以下命令:

代码语言:javascript
复制
mysql AMORE -u username -ppassword -h localhost -e "SELECT  host  FROM amoreconfig"

我将其存储在一个字符串中:

代码语言:javascript
复制
cmd="mysql AMORE -u username -ppassword -h localhost -e\"SELECT  host  FROM amoreconfig\""

测试它:

代码语言:javascript
复制
echo $cmd
mysql AMORE -u username -ppassword -h localhost -e"SELECT host FROM amoreconfig"

尝试通过执行以下操作来执行:

代码语言:javascript
复制
$cmd

然后我会看到mysql的帮助页面:

代码语言:javascript
复制
mysql  Ver 14.14 Distrib 5.1.31, for pc-linux-gnu (i686) using readline 5.1
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
Usage: mysql [OPTIONS] [database]
(...)

我想我做了一些明显错误的引用,但找不到问题所在。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-01-05 17:57:54

您是否尝试过:

代码语言:javascript
复制
eval $cmd

接下来的问题是如何转义*,因为它在无引号或双引号字符串中有特殊含义:使用单引号。

代码语言:javascript
复制
MYSQL='mysql AMORE -u username -ppassword -h localhost -e'
QUERY="SELECT "'*'" FROM amoreconfig" ;# <-- "double"'single'"double"
eval $MYSQL "'$QUERY'"

额外的好处:它读起来也不错: eval mysql查询;-)

票数 454
EN

Stack Overflow用户

发布于 2010-01-05 18:03:30

尝尝这个

代码语言:javascript
复制
$ cmd='mysql AMORE -u root --password="password" -h localhost -e "select host from amoreconfig"'
$ eval $cmd
票数 27
EN

Stack Overflow用户

发布于 2015-08-29 05:22:25

你甚至不需要"eval“。只需在字符串前面放一个美元符号:

代码语言:javascript
复制
cmd="ls"
$cmd
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2005192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档