linux: (sh скрипт) не может объединить переменные даты в одной команде - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь запустить некоторые команды, которым требуются аргументы начала и конца даты, но когда я объединяю переменные dateFrom и dateTo, это отсутствует в начале.

Пожалуйста, проверьте мой код и выведите последнюю строку Спасибо.

#! /bin/bash
dateFrom=$(date +"%Y-%m-%d")
dateTo=$(date --date="-7 day" +"%Y-%m-%d")
echo "dateFrom: $dateFrom"
echo "dateTo: $dateTo"
echo "dateFrom: $dateFrom, dateTo: $dateTo"

вывод

dateFrom: 2020-04-23
dateTo: 2020-04-16
, dateTo: 2020-04-16

1 Ответ

0 голосов
/ 23 апреля 2020

Кажется, проблема связана с наличием ограничителей строки DOS в файле bash -скриптов.

Я написал и использую bash -скрипт в следующих строках для решения проблемы.

Этот скрипт удалит символы \r из указанного файла после того, как будет сгенерирована копия исходного файла.

Вы можете скопировать этот скрипт как dos2unix.sh и назвать его как:

/home/user: ./dos2unix.sh filename<enter>

При выполнении будет сгенерировано два файла: filenames.dos, который является оригиналом, и filename, который это файл, очищенный от символов \r.

#!/bin/bash

program=$(basename $0)

if test $# -lt 1
then
  echo "usage: $program filename"
  echo -e "\nThe original file will be copied as filename.dos"
  exit 1
fi

cp $1 $1.dos

tr -d '\r' <$1.dos >$1

Примечание: не забудьте выполнить: chmod + x dos2 unix. sh!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...