
Следующий скрипт 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'
Не работает! Выход остается таким же, как и вход