#!/bin/bash
yesterday= date --date="1 day ago" +%Y%m%d | tr -d '\n'
remote_file="76.99.20.129\$yesterday.zip"
echo $remote_file
2012010476.99.20.129$yesterday.zip
가 무슨 일이야?
은 내가 wget을 호출에이 변수를 전달하고 자동으로
#!/bin/bash
yesterday= date --date="1 day ago" +%Y%m%d | tr -d '\n'
remote_file="76.99.20.129\$yesterday.zip"
echo $remote_file
2012010476.99.20.129$yesterday.zip
가 무슨 일이야?
은 내가 wget을 호출에이 변수를 전달하고 자동으로
두 문제가 여기에 파일을 다운로드 할 수 있습니다. 첫 번째는 당신이 실제로 변수에 날짜 명령의 출력을 캡처하지 않을 것입니다 :
당신의 명령은date
명령을 실행하는 동안 빈 문자열로
yesterday
을 설정하는 것입니다하고 무엇
pax> yesterday= date --date="1 day ago" +%Y%m%d | tr -d '\n'
[email protected]:~$ echo $yesterday
<<no output>>
, nifty bash
특징 나는 one-shot 환경 설정이라고 부르지 만, bash
은 거의 확실하게 다른 것을 호출한다.
dosomething
명령이 반환에 환경에
xyzzy
에 대한 항목 만을 가지고있는
xyzzy=plugh dosomething
, 그것을 시작 쉘은하지 않습니다 : 그것은 다르지 없습니다. 이 다릅니다 : 당신이 닿을 수없는 변수를 의미하는 $
을 탈출하고 있다는
export xyzzy=plugh
dosomething
# Here xyzzy is still set.
두 번째입니다.
시도 :
pax> yesterday=$(date --date="1 day ago" +%Y%m%d)
pax> remote_file="76.99.20.129_${yesterday}.zip"
pax> echo ${remote_file}
76.99.20.129_20120105.zip
난 당신이 명확하게 묘사를 볼 수있는 단지 있도록에 밑줄을 넣어. 그것을 원래의 의도대로 동작을 얻으려면 제거하십시오. 이중\
에 이상
pax> yesterday=$(date --date="1 day ago" +%Y%m%d)
pax> remote_file="76.99.20.129\\${yesterday}.zip"
pax> echo ${remote_file}
76.99.20.129\20120105.zip
주 : 이후에 실제로있는 문자열이 백 슬래시를해야하는 경우가 $
에 영향을주지 않도록
, 당신은 탈출해야합니다 탈출을 달성하십시오.
또한 환경 변수 이름을 {}
으로 둘러 쌌습니다. 환경 변수 abc
의 내용에 (예를 들어) 문자 d
을 추가하려는 문제를 피하는 것이 좋습니다.
echo $abcd
명령은 abcd
환경 변수의 내용을 제공하지만, 필요한 것은 echo ${abc}d
입니다. 나는 항상이 명시적인 표기법을 선호한다.
또한 holygeek 덕분에 tr -d '\n'
이 실제로 필요하지 않으므로이를 제거했습니다.
당신은''| tr -d '\ n'''쉘이 명령 대체에서 자동으로 수행하므로 필요하지 않습니다. – holygeek
사용 ${}
는 탈출 :
remote_file="76.99.20.129\\${yesterday}.zip"
Ooops, 나는'\\\' –
난 remote_file을 시도 해 봤나 = "76.99.20.129 \/$의 yesterday.zip" – jeremyforan
이 당신의 코드를 복사하여 붙여 넣기의 경우, 또는이 재 입력입니까? 그것은 그것이 잘못 입력 된 것처럼 느껴집니다. 다시 입력 된 것으로 의심됩니다.다시 입력하지 마십시오. 실제로 존재하지 않았던 디버깅 코드에 노력을 기울이는 것을 좋아하지 않습니다. 감사. – sarnold
정확한 출력물을 얻으 려하므로 목표가 무엇인지 알 수 있습니까? –