繁体   English   中英

bash脚本中的替换错误

[英]Bad substitution error in bash script

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

#! /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

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

$ . scp.sh $ . scp.sh命令将使用当前shell( bash )来执行脚本(不需要分支子shell)。

$ ./scp.sh命令将使用脚本的hashbang行中指定的shell。 在你的情况下,它是shdash

最简单的方法就是用#!/bin/bash (或者bash所在的路径)替换第一行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM