Невозможно использовать аргумент в скрипте расчета даты bash

Невозможно использовать аргумент в скрипте расчета даты bash

Следующий скрипт bash не будет работать. Мне нужно вычислить дату в зависимости от количества дней с 14 октября 1582 года, где аргументом будет количество дней.

d="$1"
date -d '14 Oct 1582 + "$d" days'

например команда

./datedays.sh 154748

должен дать

Wed Jun 21 00:00:00 BST 2006

вместо этого он выдает ошибку

date: invalid date ‘14 Oct 1582 + "$d" days’

решение1

Необходимо использовать двойные кавычки вместо одинарных:

date -d "14 Oct 1582 + $d days"

решение2

Вы используете в скрипте сильное кавычивание (одинарное кавычивание), поскольку сильное кавычивание препятствует интерпретации содержимого внутри одинарной кавычки, за исключением самой кавычки.

Одинарные кавычки отключают специальное значение символа $ в скрипте.

#!/bin/bash
echo "$PATH"

Работает!

#!/bin/bash
echo '$PATH'

Не работает! Выход остается таким же, как и вход

Связанный контент