Shell 用 Notepad++ 编写的脚本,Visual Studio 代码,Sublime 没有按预期工作
Shell script written in Notepad++, Visual Studio Code, Sublime not working as expected
我使用三种不同的 ide 编写了以下代码。代码很简单,它在配置单元上创建数据库,但数据库名称是动态的。
#!/bin/bash
year=`date +%Y`
month=`date +%m`
day=`date +%d`
echo ${year}
echo ${month}
echo ${day}
dbname=dynamic_hive_${year}_${month}_${day}
echo ${dbname}
hive -e "create database if not exists ${dbname}; use ${dbname}; drop table bins_1; CREATE TABLE bins_1 (firstname string);"
我在我们的环境中上传了这段代码,运行 使用 java 程序。 java程序使用javaRuntime.exec到运行脚本。但是,当我看到日志时,结果如下:
这里我在每个回显之间得到一个 space,数据库名称也不符合预期。如果我手动 运行 上传的文件执行 sh testfile.sh,那么我会得到以下结果:
数据库打印出来了,但是太奇怪了,不符合预期。在错误中我们可以看到数据库无法被解析。我认为新行出现在 2020 年之后,因此不会被解析。
如果我在我的服务器中复制相同的代码,通过执行 vim 和 运行 然后它 运行 绝对没问题。我很困惑,我真的不知道我错过了什么。这应该相当简单,但我遗漏了一些东西。如果有人可以帮助我,我将不胜感激。
您的行尾似乎有问题。如果您在复制之前检查 VSCode 中的行尾 - 看起来您的脚本似乎以 CRLF 作为分隔符而不是 LF,也许?
此外,尝试 "cat -vt /path/to/script" 以在复制后查看任何奇怪的字符。
我使用三种不同的 ide 编写了以下代码。代码很简单,它在配置单元上创建数据库,但数据库名称是动态的。
#!/bin/bash
year=`date +%Y`
month=`date +%m`
day=`date +%d`
echo ${year}
echo ${month}
echo ${day}
dbname=dynamic_hive_${year}_${month}_${day}
echo ${dbname}
hive -e "create database if not exists ${dbname}; use ${dbname}; drop table bins_1; CREATE TABLE bins_1 (firstname string);"
我在我们的环境中上传了这段代码,运行 使用 java 程序。 java程序使用javaRuntime.exec到运行脚本。但是,当我看到日志时,结果如下:
这里我在每个回显之间得到一个 space,数据库名称也不符合预期。如果我手动 运行 上传的文件执行 sh testfile.sh,那么我会得到以下结果:
数据库打印出来了,但是太奇怪了,不符合预期。在错误中我们可以看到数据库无法被解析。我认为新行出现在 2020 年之后,因此不会被解析。
如果我在我的服务器中复制相同的代码,通过执行 vim 和 运行 然后它 运行 绝对没问题。我很困惑,我真的不知道我错过了什么。这应该相当简单,但我遗漏了一些东西。如果有人可以帮助我,我将不胜感激。
您的行尾似乎有问题。如果您在复制之前检查 VSCode 中的行尾 - 看起来您的脚本似乎以 CRLF 作为分隔符而不是 LF,也许?
此外,尝试 "cat -vt /path/to/script" 以在复制后查看任何奇怪的字符。