bash脚本中的不良替代错误



我已经尝试了很多,但无法从中找到解决方案。我有一个简单的脚本:

#! /bin/sh
o="12345"
a=o
b=${!a}
echo ${a}
echo ${b}

执行

$ . scp.sh

它会在没有错误的情况下产生正确的输出,但是当执行时:

$ ./scp.sh

它产生

./scp.sh:4:./scp.sh:不良替代

为什么发生这种情况的任何想法。


我被建议使用bash模式,并且效果很好。但是,当我通过python执行相同的脚本(将脚本标头更改为bash)时,我会遇到相同的错误。

我从python称其为:

import os
os.system(". ./scp.sh")

尝试使用:

#!/bin/bash

而不是

#! /bin/sh

此错误的原因是在这些情况下使用了两个不同的外壳。

$ . scp.sh命令将使用当前的壳(bash)执行脚本(不拨打子壳)。

$ ./scp.sh命令将使用脚本的HashBang行中指定的外壳。就您而言,它是shdash

最简单的方法是用#!/bin/bash替换第一行(或任何路径bash中的任何路径)。

相关内容

  • 没有找到相关文章

最新更新