[英]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。 在你的情况下,它是sh
或dash
。
最简单的方法就是用#!/bin/bash
(或者bash
所在的路径)替换第一行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.