无法在 Ubuntu 服务器 18.04.2 LTS 中运行 shell,但它可以在 Ubuntu 桌面 18.04 LTS 中运行

无法在 Ubuntu 服务器 18.04.2 LTS 中运行 shell,但它可以在 Ubuntu 桌面 18.04 LTS 中运行

我一直在 Ubuntu 桌面的 shell 中工作,我也做了详细的拼写检查之后我继续测试,确保每一行都按预期工作,除了几个目录错误(需要在服务器上更改),一切似乎都正常

现在我尝试在一台干净的虚拟机中用 ubuntu 服务器运行它,所以我挂载了一个共享文件夹来访问我的 shell,授予所有用户执行权限,然后尝试运行它,但出乎意料的是,它根本就无法运行

为了让解释器运行脚本,我需要删除第一行/bin/bash #!/bin/bash并使用来源代替./运行 shell(名为 master.sh)

现在我可以运行它了但我仍然收到这个错误

在此处输入图片描述

一个常见的错误if 语句的语法错误,我知道它已被我修复并使用拼写检查进行了测试

之后我尝试使用以下方法清除任何其他非 Unix 字符

在此处输入图片描述

我知道这两个操作系统都使用 BASH 作为解释器(我检查过了)

如果有人想看看的话,下面是我能识别出停止脚本的 2 个“IF 条件”代码的最小示例

#!/bin/bash
if [ -e DB_conf ]
    then
            read -p "Use DB_conf settings? [y/n]: " -n 1 -r
                if [[ $REPLY =~ ^[Yy]$ ]]
                then
                    STUFF
                else           #This is line 39
                    STUFF2 
                fi
    else        
        MORE STUFF
    fi

为什么 ubuntu 服务器显示此错误,而桌面服务器(它实际工作的地方)不显示?

答案1

在我看来,sed 命令有太多或太少的 /,请参阅@steeldriver 的评论以获得更好的 sed 命令。

或者,您可以在 vim 中打开脚本并使用 [esc] 查看不可打印字符,:set list看看是否有回车符。如果这不是问题,我们需要更多上下文来解决 bash 错误。

相关内容