Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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_Shell - Fatal编程技术网

Bash 多行关联数组如何来源?

Bash 多行关联数组如何来源?,bash,shell,Bash,Shell,我正在尝试这样的多行关联数组的源 declare-p-A MOCK_返回=( ['/usr/local/bin/docker']=“” ['/usr/local/bin/docker history']=“按大小创建的图像注释” cf0f3ca922e0-10-18T20:48:51+02:00/bin/sh-c#(nop)CMD['/bin/bash']0 2019-10-18T20:48:51+02:00/bin/sh-c mkdir-p/run/systemd&&echo“do…7” )>

我正在尝试这样的多行关联数组的源

declare-p-A MOCK_返回=(
['/usr/local/bin/docker']=“”
['/usr/local/bin/docker history']=“按大小创建的图像注释”
cf0f3ca922e0-10-18T20:48:51+02:00/bin/sh-c#(nop)CMD['/bin/bash']0
2019-10-18T20:48:51+02:00/bin/sh-c mkdir-p/run/systemd&&echo“do…7”
)>模拟响应
----其他文件
源模拟响应
echo${MOCK_返回['/usr/local/bin/docker history']}
将换行符保留在bash中的
/usr/local/bin/docker history
-值中。 遗憾的是,它似乎是作为一条线采购的

我已经试过像这样重复它了

echo”声明-模拟返回=(
['/usr/local/bin/docker']=\“\”
['/usr/local/bin/docker history']=\“按大小创建的图像注释”
cf0f3ca922e0$nextYear-10-18T20:48:51+02:00/bin/sh-c#(nop)CMD['/bin/bash']0
2019-10-18T20:48:51+02:00/bin/sh-c mkdir-p/run/systemd&echo“do…7”
)“>模拟退货
----其他文件
源模拟响应
echo${MOCK_返回['/usr/local/bin/docker history']}

保留显示
mockReturns
文件中的换行符,但当我获取它时,它们又消失了。

尝试回显
中包含的变量“

echo“${MOCK_返回['/usr/local/bin/docker history']}”

$declare-p-A MOCK_返回=(
['/usr/local/bin/docker']=“”
['/usr/local/bin/docker history']=“按大小创建的图像注释”
cf0f3ca922e0-10-18T20:48:51+02:00/bin/sh-c#(nop)CMD['/bin/bash']0
2019-10-18T20:48:51+02:00/bin/sh-c mkdir-p/run/systemd&&echo“do…7”
)>模拟响应
$cat测试
#!/bin/bash
源模拟响应
echo“${MOCK_返回['/usr/local/bin/docker history']}”
出口0
美元/测试
按大小创建的图像注释
cf0f3ca922e0-10-18T20:48:51+02:00/bin/sh-c#(nop)CMD['/bin/bash']0
2019-10-18T20:48:51+02:00/bin/sh-c mkdir-p/run/systemd和echo'do 7
编辑:

对于
declare
,据我所知,如果
-p
选项是源代码,那么它是无用的。

declare仅仅是一个命令,不管您拆分了多少行。
declare-p
的输出中会保留换行符吗?输出中的换行符是b因为您没有引用
echo
的参数,它与关联数组或
source
命令或诸如此类的内容无关。(如果在运行
echo${MOCK_RETURNS['/usr/local/bin/docker history']]时仍显示换行符)
手动,您必须执行一些您没有向我们显示的操作,例如修改
IFS
)……除了链接的副本之外,请参阅。请参阅使用两个
echo
命令显示相同的声明(一个具有正确的引用,另一个没有)@CharlesDuffy我认为这是一种尝试,而不是问题的一部分。
-p
选项如果在源文件中就没有用,因为执行脚本只会使终端混乱。是的,但它不在问题所问的源文件中;而是他们如何创建源文件。完全正确。相应地更改了它。实际上-p在我的用例中是有意义的,但它似乎是一个不同的问题,涉及蝙蝠