Sha*_*zad 3 linux bash shell syntax-error
我已经尝试了很多,但无法从中获得解决方案.我有一个简单的脚本:
#! /bin/sh
o="12345"
a=o
b=${!a}
echo ${a}
echo ${b}
Run Code Online (Sandbox Code Playgroud)
执行时如
$ . scp.sh
Run Code Online (Sandbox Code Playgroud)
它生成正确的输出而没有错误,但执行时如:
$ ./scp.sh
Run Code Online (Sandbox Code Playgroud)
它产生
./scp.sh:4:./scp.sh:错误的替换
任何想法为什么会这样.
我被建议使用bash模式,它工作正常.但是当我通过Python执行相同的脚本(将脚本标题更改为bash)时,我得到了同样的错误.
我是用Python调用的:
import os
os.system(". ./scp.sh")
Run Code Online (Sandbox Code Playgroud)
尝试使用:
#!/bin/bash
Run Code Online (Sandbox Code Playgroud)
代替
#! /bin/sh
Run Code Online (Sandbox Code Playgroud)
出现此错误的原因是在这些情况下使用了两个不同的shell.
$ . scp.sh命令将使用当前的shell(bash)来执行脚本(不需要分支子shell).
$ ./scp.sh命令将使用脚本的hashbang行中指定的shell.在你的情况下,它是sh或者dash.
最简单的方法是用#!/bin/bash(或任何路径bash)替换第一行.
| 归档时间: |
|
| 查看次数: |
9800 次 |
| 最近记录: |