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