Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我传递单引号时,如何阻止Bash转义单引号$@_Bash_Escaping - Fatal编程技术网

当我传递单引号时,如何阻止Bash转义单引号$@

当我传递单引号时,如何阻止Bash转义单引号$@,bash,escaping,Bash,Escaping,我有一个bash脚本,它试图将一些传入参数传递给另一个程序。基本上是: set -x echo $@ terraform $@ set +x 执行时(它被另一个脚本通过docker调用,但我认为这并不重要……),它输出: + echo force-unlock e4014910-6b34-47a7-ad93-51842a63f0fa -var ''\''environment=qa'\''' force-unlock e4014910-6b34-47a7-ad93-51842a63f0fa -

我有一个bash脚本,它试图将一些传入参数传递给另一个程序。基本上是:

set -x
echo $@
terraform $@
set +x
执行时(它被另一个脚本通过docker调用,但我认为这并不重要……),它输出:

+ echo force-unlock e4014910-6b34-47a7-ad93-51842a63f0fa -var ''\''environment=qa'\'''
force-unlock e4014910-6b34-47a7-ad93-51842a63f0fa -var 'environment=qa'
+ terraform force-unlock e4014910-6b34-47a7-ad93-51842a63f0fa -var ''\''environment=qa'\'''
Too many command line arguments. Configuration path expected.
如何让它执行回显参数:

terraform force-unlock e4014910-6b34-47a7-ad93-51842a63f0fa -var 'environment=qa'
而不是

terraform force-unlock e4014910-6b34-47a7-ad93-51842a63f0fa -var ''\''environment=qa'\'''

引用它:
terraform“$@”
我得到了相同的输出,谢谢,
set+x
输出你确定docker调用层没有添加这些额外的引用吗?当我想调用类似于
docker run bash-c“$@”
的东西以保留$@中的间距时,我会做类似的事情。我认为我的示例是错误的,并且给出了一个假否定,我将从强制解锁改为计划,看看这是否适用于