![无法在 Ubuntu 服务器 18.04.2 LTS 中运行 shell,但它可以在 Ubuntu 桌面 18.04 LTS 中运行](https://linux22.com/image/1012895/%E6%97%A0%E6%B3%95%E5%9C%A8%20Ubuntu%20%E6%9C%8D%E5%8A%A1%E5%99%A8%2018.04.2%20LTS%20%E4%B8%AD%E8%BF%90%E8%A1%8C%20shell%EF%BC%8C%E4%BD%86%E5%AE%83%E5%8F%AF%E4%BB%A5%E5%9C%A8%20Ubuntu%20%E6%A1%8C%E9%9D%A2%2018.04%20LTS%20%E4%B8%AD%E8%BF%90%E8%A1%8C.png)
我一直在 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 错误。