如何在bash命令替换中转义单引号字符

如何在bash命令替换中转义单引号字符,bash,unix,sqoop,Bash,Unix,Sqoop,我想生成一个SQOOP命令,它附加了一些变量,比如CUSTOM_PARAMS。 我已经在一个文件中定义了这个变量:sayhi.cfg 该变量有一些单引号,如“orc” 当我在命令提示符下对文件进行源代码转换并执行echo时,它会准确地给出上面写的内容,看起来是正确的 但当我从shell脚本调用它时,如下所示: 变量中的*字符被视为命令: 稍后我需要在脚本中运行SQOOP语句,并尝试了几个选项,但没有帮助。 我也尝试了\*,但没有帮助,它输出: 更改此行: 为此: SQOOP_COMMAND="S

我想生成一个SQOOP命令,它附加了一些变量,比如
CUSTOM_PARAMS
。 我已经在一个文件中定义了这个变量:say
hi.cfg

该变量有一些单引号,如“orc”

当我在命令提示符下对文件进行源代码转换并执行echo时,它会准确地给出上面写的内容,看起来是正确的

但当我从shell脚本调用它时,如下所示:

变量中的*字符被视为命令:

稍后我需要在脚本中运行SQOOP语句,并尝试了几个选项,但没有帮助。 我也尝试了
\*
,但没有帮助,它输出:

更改此行:

为此:

SQOOP_COMMAND="SQOOP statement : sqoop import blah blah $CUSTOM_PARAMS"
echo "$SQOOP_COMMAND"
同时更改此行:

为此:

SQOOP_COMMAND="SQOOP statement : sqoop import blah blah $CUSTOM_PARAMS"
echo "$SQOOP_COMMAND"
或者,如果要嵌入额外的双引号,请执行以下操作:

SQOOP_COMMAND="SQOOP statement : sqoop import blah blah \"$CUSTOM_PARAMS\""
发生的事情是你写它的方式, 第一个嵌入的双引号关闭带引号的表达式。 实际上,这里有
SQOOP语句:SQOOP import blah blah
被引用,后面是
$CUSTOM_PARAMS
未被引用, 后跟一个空字符串(
“”
)。 如果要在双引号中嵌入双引号, 然后您需要使用
\
将其转义

但在我看来,你根本不想嵌入双引号

SQOOP_COMMAND="SQOOP statement : sqoop import blah blah "$CUSTOM_PARAMS""
SQOOP_COMMAND="SQOOP statement : sqoop import blah blah $CUSTOM_PARAMS"
echo $SQOOP_COMMAND
echo "$SQOOP_COMMAND"
SQOOP_COMMAND="SQOOP statement : sqoop import blah blah \"$CUSTOM_PARAMS\""