我有一个sh (shebang #!/bin/sh)脚本(sh.sh),它调用bash (shebang #!/bin/bash)子脚本:
. "some-path/bash.sh"在bash脚本中,我声明了一个关联数组:declare -A properties,从而得到了错误declare: not found。
很明显,为什么没有找到declare,因为父脚本是sh脚本,而不是bash。
另一种方法是打开一个新的shell,但这是有问题的,因为下标的目的是定义要在父脚本中使用的变量。子shell不应该干扰父变量。
家长(sh.sh):
#!/bin/sh
. "some-path/bash.sh"儿童(bash.sh):
#!/bin/bash
declare -A properties我试过的用法:
./sh.sh发布于 2016-07-18 16:05:21
不要源脚本(source script或. script)。
相反,只需正常运行它,script。
发布于 2016-07-18 16:04:52
我没有使用bash:./sh.sh运行父脚本,而是使用bash:bash sh.sh运行它。起作用了。
我有一个隐藏的假设: sh是bash的子集。不确定是否正确,但成功了。
https://unix.stackexchange.com/questions/296654
复制相似问题