Você pode usar
-"$i"d
ou
-${i}d
No entanto, não posso testar a solução, pois o comando date
não reconhece a opção -v -1d
.
Simples para loop na linha de comando:
cobrakai$for((i=1;i<=10;i+=1)); do echo "Welcome $i times"; doneWelcome 1 times
Welcome 2 times
Welcome 3 times
Welcome 4 times
Welcome 5 times
Welcome 6 times
Welcome 7 times
Welcome 8 times
Welcome 9 times
Welcome 10 times
... e se eu quiser colocar um comando de data em posso fazer isso:
cobrakai$for((i=1;i<=10;i+=1)); do echo $(date -v -1d "+%Y-%m-%d"); done
2013-08-04
2013-08-04
2013-08-04
2013-08-04
2013-08-04
2013-08-04
2013-08-04
2013-08-04
2013-08-04
2013-08-04
Mas, claro, eu realmente quero que as datas diminuam, então eu substituo o $ i pelo 1, mas acho que recebo ...
for((i=1;i<=10;i+=1)); do echo $(date -v -$id "+%Y-%m-%d"); done
-: Cannot apply date adjustment
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
Eu presumo que seja porque $ id é reconhecido como $ (id) não ($ i) d, então eu tento,
cobrakai$for((i=1;i<=10;i+=1)); do echo $(date -v -($i)d "+%Y-%m-%d"); done
-bash: command substitution: line 1: syntax error near unexpected token '('
-bash: command substitution: line 1: 'date -v -($i)d "+%Y-%m-%d"'
e
for((i=1;i<=10;i+=1)); do echo $(date -v -$i d "+%Y-%m-%d"); done
date: illegal time format
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
mas eu estou chegando a lugar nenhum - qual é a chave?
Se você estiver usando um novo conjunto de utilitários bash / gnu:
$ para ((i = 1; i < 10; i + = 1)) data "+% Y-% m-% d" --date="$ {i} dia"; feito
Tags command-line bash