
O seguinte script bash não funcionará. Preciso calcular a data dependendo do número de dias desde 14 de outubro de 1582, onde o argumento será o número de dias.
d="$1"
date -d '14 Oct 1582 + "$d" days'
por exemplo o comando
./datedays.sh 154748
deveria dar
Wed Jun 21 00:00:00 BST 2006
em vez disso, dá um erro
date: invalid date ‘14 Oct 1582 + "$d" days’
Responder1
Você deve usar aspas duplas em vez de aspas simples:
date -d "14 Oct 1582 + $d days"
Responder2
Você está usando aspas fortes (aspas simples) no script, pois as aspas fortes impedem a interpretação do conteúdo dentro das aspas simples, exceto a aspa.
Aspas simples desativam o significado especial de $ em um script.
#!/bin/bash
echo "$PATH"
Funciona!
#!/bin/bash
echo '$PATH'
Não funciona! A saída permanece igual à entrada