Сценарий оболочки, написанный в Notepad ++, Visual Studio Code, Sublime не работает должным образом - PullRequest
0 голосов
/ 27 мая 2020

Я написал следующий код, используя три разных ide. Код прост: база данных создается в улье, но имя базы данных будет динамическим c.

#!/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 использует java Runtime.exe c для запуска сценария. Однако, когда я вижу журналы, результат выглядит следующим образом:

enter image description here

Здесь я получаю пробел между каждым эхом, и имя базы данных также не так, как ожидалось. Если я вручную запустил загруженный файл, выполнив sh testfile. sh, то получу следующий результат:

enter image description here

База данных распечатана, но это так странно и не так, как ожидалось. В ошибке мы видим, что база данных не может быть проанализирована. Я думаю, что новая строка появится после 2020 года, поэтому она не анализируется.

Если тот же код, который я копирую на свой сервер, выполнив vim и запустив его, он работает абсолютно нормально. Я так сбита с толку и действительно не знаю, что упускаю. Это должно быть довольно просто, но я что-то упускаю. Если бы кто-то мог мне помочь, я был бы очень признателен.

1 Ответ

1 голос
/ 27 мая 2020

Похоже, у вас проблема с окончанием строки. Если вы проверите окончание строки в VSCode перед копированием - похоже, что ваш скрипт переходит с CRLF в качестве разделителя, а не просто LF, возможно?

Как сделать все окончания строк (EOL ) во всех файлах в Visual Studio Code, UNIX как?

Также попробуйте выполнить команду «cat -vt / path / to / script», чтобы увидеть любые нечетные символы после его копирования.

...