명령 행에서 for 루프 사용-변수가 작동하지 않습니까? 9 times Welcome

명령 행에서 간단한 for 루프 :

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

… 날짜 명령을 넣고 싶다면 다음과 같이하십시오.

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

그러나 물론 날짜가 실제로 카운트 다운되기를 원하므로 1에 대해 $ i로 대체하지만 내가 얻는 것을 찾으십시오 …

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]

나는 $ id가 ($ i) d가 아닌 $ (id)로 인식되어 있기 때문에 그럴 것이라고 생각합니다.

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"'

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]

하지만 난 아무데도 없어요-열쇠는 무엇입니까?



답변

당신이 사용할 수있는

-"$i"d

또는

-${i}d

date명령이 -v -1d옵션을 인식하지 못 하기 때문에 솔루션을 테스트 할 수 없습니다 .


답변

최신 bash / gnu 유틸리티 세트를 사용하는 경우 :

$ for ((i = 1; i <10; i + = 1)) 날짜 “+ % Y- % m- % d”–date = “$ {i} day”; 끝난